WebSocket 是一种 HTTP 协议的补充,它基于 TCP 协议,在客户端和服务端之间建立双向通信的实时网络通信协议。Express.js 是一个流行的 Node.js 框架,它可以轻松地将 WebSocket 集成到应用程序中,实现实时双向通信。本文将为您介绍如何在 Express.js 中使用 WebSocket 传递 Json 格式数据。
WebSocket 基本概念
WebSocket 是一个 HTML5 标准,它采用了非常简单的握手协议,在客户端和服务端之间建立一个双向通信通道。WebSocket 在传输数据时,采用了二进制格式进行传输,这样可以大大减少数据传输的大小,提高传输效率;同时也支持文本格式数据传输。
Express.js 中集成 WebSocket
在 Express.js 中,可以通过 ws 包 来集成 WebSocket。我们可以先通过 npm 安装这个包:
npm install ws --save
然后在 Express.js 中引入该包:
const WebSocket = require('ws');
接下来,我们可以在应用程序中使用 WebSocket。首先,我们需要在服务器上创建一个 WebSocket 服务器,我们可以在应用程序路由中添加以下代码:
const wsServer = new WebSocket.Server({ port: 8080 });
以上的代码将会创建一个 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 对象:
const socket = new WebSocket('ws://localhost:8080'); socket.onmessage = function (event) { const message = JSON.parse(event.data); console.log(message); // Output: { type: 'message', content: 'Hello, World!', timestamp: 1612655729204 } };
指导意义
通过本文的介绍,我们学习了在 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