Express.js 中通过 WebSocket 传递 Json 格式数据

WebSocket 是一种 HTTP 协议的补充,它基于 TCP 协议,在客户端和服务端之间建立双向通信的实时网络通信协议。Express.js 是一个流行的 Node.js 框架,它可以轻松地将 WebSocket 集成到应用程序中,实现实时双向通信。本文将为您介绍如何在 Express.js 中使用 WebSocket 传递 Json 格式数据。

WebSocket 基本概念

WebSocket 是一个 HTML5 标准,它采用了非常简单的握手协议,在客户端和服务端之间建立一个双向通信通道。WebSocket 在传输数据时,采用了二进制格式进行传输,这样可以大大减少数据传输的大小,提高传输效率;同时也支持文本格式数据传输。

Express.js 中集成 WebSocket

在 Express.js 中,可以通过 ws 包 来集成 WebSocket。我们可以先通过 npm 安装这个包:

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

然后在 Express.js 中引入该包:

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

接下来,我们可以在应用程序中使用 WebSocket。首先,我们需要在服务器上创建一个 WebSocket 服务器,我们可以在应用程序路由中添加以下代码:

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

以上的代码将会创建一个 WebSocket 服务器,并监听在 8080 端口。接着,我们可以为 WebSocket 服务器添加一个连接监听器,该监听器会在客户端连接到服务器时触发:

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

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

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

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

以上的代码将会在客户端与服务器建立连接时触发,并将客户端的连接始终保持在内存中。然后我们可以添加三个监听器:message、error 和 close。message 监听器将在收到客户端发送的消息时触发,error 监听器将在出现错误时触发,close 监听器将在客户端与服务器连接断开时触发。

通过 WebSocket 传递 Json 格式数据

在 Express.js 中通过 WebSocket 发送 Json 格式的数据非常简单。我们可以使用 JSON.stringify() 方法从 JavaScript 对象中构建一个 Json 字符串,然后使用 WebSocket.send() 方法将它发送到客户端,客户端可以使用 JSON.parse() 方法将它转换回 JavaScript 对象。

以下是一个完整的实例代码,其中 WebSocket.send() 是用来发送 Json 格式数据的:

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

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

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

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

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

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

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

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

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

在以上示例中,我们创建了一个 WebSocket 服务器,并向客户端发送了一条 Json 格式的消息。客户端可以通过 JSON.parse() 方法将其转换为 JavaScript 对象:

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

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

指导意义

通过本文的介绍,我们学习了在 Express.js 中使用 WebSocket 传递 Json 格式的数据。在实际应用中,我们可以通过 WebSocket 实现实时通信、实时数据同步等功能。比如,我们可以使用 WebSocket 构建一个实时聊天室应用程序,也可以使用它实现实时数据可视化等功能。

在使用 WebSocket 时需要注意,由于它始终保持连接,所以需要特别处理连接的关闭、错误等情况。同时,在发送 Json 格式数据时,需要注意数据的格式清晰、简洁,避免不必要的数据传输和占用带宽。

结论

WebSocket 是一个在客户端和服务端之间建立实时通信的协议,它可以优化数据传输效率,实现双向通信。在 Express.js 中,我们可以使用 ws 包轻松地集成 WebSocket,同时通过 JSON.stringify() 和 JSON.parse() 方法快速地将 JavaScript 对象转换为 Json 字符串和 JavaScript 对象。在实际应用中,我们可以通过 WebSocket 实现实时聊天、实时数据同步和实时数据可视化等功能,同时需要注意数据格式的简洁性和连接的关闭、错误等情况的处理。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/66fd0148447136260175c899