Node.js 中如何使用 WebSocket 实现实时通信

阅读时长 5 分钟读完

前言

现今互联网时代对于实时通信的要求越来越高,而 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它提供了一个事件驱动、非阻塞 I/O 的模型,使它成为了构建实时 Web 应用的理想平台。本文中将会介绍如何使用 WebSocket 在 Node.js 中实现实时通信。

WebSocket 是什么?

WebSocket 是一种网络通信协议,可以在单个 TCP 连接上提供全双工通信信道。WebSocket 协议使得在 Web 应用程序中开发实时信息交换变得更加容易。

WebSocket 与 HTTP 的区别

HTTP 协议是无状态的,每个请求和响应都是独立的。由于这种无状态的特性,HTTP 协议对于服务器与客户端之间的交互是不利的。如果需要经常性的更新数据,那么不得不通过轮询来不断的获取更新,这样不仅带来了非常多的延迟,而且也会大大降低应用程序的性能。

而 WebSocket 协议则不同,WebSocket 协议通过一个 HTTP 握手的方式来启动一个与服务器持久连接的通信信道。这个信道是全双工的,可以实现服务器与客户端之间的实时通信。WebSocket 协议相当于将一个 TCP 连接划分为两个信道,一个用于客户端发送信息,一个用于服务器发送信息,从而实现实时的双向通信。

在 Node.js 中使用 WebSocket

在 Node.js 中使用 WebSocket 需要借助 ws 库。ws 是一个简单、快速、稳定、高效的 WebSocket 实现。

安装 ws 库:

接下来我们看一个实现 WebSocket 实时通信的简单示例:

-- -------------------- ---- -------
-- ------
----- --------- - --------------

----- --- - --- ------------------ ----- ---- ---

-------------------- -------- -------------- -
  -------------------------

  ---------------- -------- -------------- -
    ------------------
    ---------------------------- ------------ -
      -- ------------------ --- --------------- -
        ------------------
      -
    ---
  ---
---

app.js 中,我们首先引入 ws 库,然后创建一个 WebSocket 服务器,设置端口号为 8080。

当客户端连接到服务器时,wss 触发 connection 事件,其中 ws 表示 WebSocket 连接。这个连接可以用于接收和发送消息。当客户端发送消息时,ws 触发 message 事件,并将消息参数传递给回调函数,我们可以在此回调函数中将消息广播给所有连接了服务器的客户端。

在客户端页面中,我们添加以下代码:

-- -------------------- ---- -------
-- ----------
--------- -----
------
  ------
    ----- ----------------
    ---------------- ------------
  -------
  ------
    --- -------------------
    ----- ----------
      ------ ----------- ---------- ----------
      ---------------------
    -------
    --------
      ----- -- - --- ---------------------------------
      
      --------------------------- -------- ------- -
        -------------------------
      ---

      ------------------------------ -------- ------- -
        ----- -------- - ------------------------------------
        ----- ------- - -----------------------------
        ----- ------- - ------------------------------------
        -----------------------------
        ------------------------------
      ---

      ----- ---- - --------------------------------
      ----- ----- - ---------------------------------

      ------------------------------- -------- ------- -
        -----------------------
        ----- ------- - ------------
        -----------------
        ----------- - ---
      ---
    ---------
  -------
-------

在客户端我们首先创建一个 WebSocket 连接,然后监听 open 事件,当连接成功后将打印 connected。然后我们监听 message 事件,当接收到来自服务器的消息时,将其显示在页面中。

在页面中添加一个表单,当用户提交表单时,我们获取输入框中的数据,向服务器发送消息。接着将输入框重置为空。

启动服务器:

在浏览器中打开 index.html 文件,您会看到一个简单的聊天应用程序。通过这个应用程序,您可以使用 WebSocket 在服务器和客户端之间进行实时通信。

总结

本文介绍了 WebSocket 在 Node.js 中的使用,WebSocket 是一种可以满足实时通信需求的协议,在 Node.js 中可以借助 ws 库轻松实现。实现一个简单的聊天应用程序只是 WebSocket 的冰山一角,WebSocket 还有很多用途,包括实时游戏、在线编辑和协作、股票行情和实时监控等。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ab81dc48841e989475777e

纠错
反馈