如何在 Node.js 中使用 WebSocket 实现客户端与服务器之间的双向通信

阅读时长 5 分钟读完

什么是 WebSocket?

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 在 WebSocket API 标准下涵盖了 Web 服务器和浏览器之间的标准通信协议,WebSocket 使得客户端和服务器之间的数据交换变得更加简单高效,同时 Web 应用程序也能够利用 WebSocket 与服务器实现实时通信和更新。

Node.js 中的 WebSocket

Node.js 的 WebSocket 模块实现了 WebSocket 协议,可以与浏览器上运行的 JavaScript 客户端进行通信。下面我们将介绍如何在 Node.js 中使用 WebSocket 模块实现客户端和服务器之间的双向通信。

安装 WebSocket 依赖

首先,我们需要使用 npm 包管理器安装 WebSocket 依赖:

服务器端代码

在服务器端,我们需要引用 WebSocket 模块并创建一个 WebSocket 服务器对象,用于监听客户端请求、处理连接和消息传递等操作。下面是一个简单的示例代码:

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

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

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

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

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

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

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

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

在上面的代码中,我们创建了一个 HTTP 服务器并把它传给了 WebSocket 服务器对象,以便它们可以在同一个端口上工作。然后,我们监听了 request 事件,当客户端的 WebSocket 连接请求到达时,我们响应该请求并在 accept 回调函数中获取连接对象,随后我们监听了该连接对象的 message 事件和 close 事件。

message 事件回调函数中,我们处理客户端发送过来的消息,并在控制台上输出该消息。然后,我们通过该连接对象的 sendUTF() 方法向客户端发送一条回复消息。

close 事件回调函数中,我们只是简单地在控制台上输出一条连接关闭了的信息。

最后,我们使用 listen() 方法启动 HTTP 服务器,监听在 8080 端口上。

客户端代码

在客户端,我们需要创建一个 WebSocket 对象并连接到服务器,然后监听消息和连接关闭事件,并向服务器发送消息等操作。下面是一个简单的示例客户端代码:

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

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

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

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

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

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

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

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

在上面的代码中,我们创建了一个 WebSocket 客户端对象,并监听了它的 connect 事件和 close 事件。

connect 事件回调函数中,我们获取了连接对象,并监听了连接对象的 message 事件。在 message 事件回调函数中,我们只是简单地在控制台上输出一条接收到的消息。

然后,我们向服务器发送了一条消息,使用 sendUTF() 方法发送。最后,我们使用 connect() 方法连接到服务器。

总结

通过上面的代码示例,我们可以看到 Node.js 中 WebSocket 的基本用法,以及客户端和服务器之间进行双向通信的实现方式。在真实的生产环境中,我们需要根据实际需求进行 WebSocket 的配置和使用,以满足我们的业务需求。

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

纠错
反馈