Express.js 中如何使用 WebSocket
WebSocket 是一种在 Web 应用程序中实时双向通信的技术,使客户端和服务器能够在任一时刻交换消息,无需刷新页面。在 Express.js 中,我们可以使用 ws
模块来实现 WebSocket 的功能,并实现与客户端的双向通信。
- 安装并引入
ws
模块
ws
是一个第三方模块,需要通过 npm 安装并引入。在终端中使用以下命令安装 ws
模块:
npm install ws --save
在 Express.js 中引入 ws
模块:
const WebSocket = require('ws');
- 在 Express.js 中创建 WebSocket 服务器
在 Express.js 中创建 WebSocket 服务器非常简单,只需要使用 ws
模块的 WebSocket.Server
类,代码如下:
const WebSocket = require('ws'); const express = require('express'); const app = express(); const server = app.listen(3000); const wss = new WebSocket.Server({ server });
在以上代码中,我们首先引入了 ws
和 express
模块,并创建了一个 Express.js 服务器,并将其监听在 3000 端口上。然后我们创建了一个 WebSocket.Server
实例 wss
,并传入 Express.js 服务器实例 server
,创建了一个 WebSocket 服务器。
- 处理 WebSocket 连接
在创建了 WebSocket 服务器之后,我们需要为 WebSocket 服务器添加监听器,以处理客户端连接,代码如下:
wss.on('connection', (ws) => { console.log('client connected'); });
在以上代码中,我们为 wss
添加了一个 connection
事件监听器,并在该事件中打印了连接成功的信息。
- 处理 WebSocket 客户端消息
在 WebSocket 客户端与服务器建立连接后,客户端可以将消息发送到服务器,并进行一些操作。我们可以通过添加 ws
实例的 message
事件监听器来处理客户端发送的消息,代码如下:
wss.on('connection', (ws) => { console.log('client connected'); ws.on('message', (message) => { console.log(`message received: ${message}`); }); });
在以上代码中,我们为 ws
实例添加了一个 message
事件监听器,并在该事件中打印出接收到的消息。
- 向 WebSocket 客户端发送消息
除了从客户端接收消息外,WebSocket 服务器还可以向客户端发送消息。我们可以使用 ws
实例的 send
方法来向客户端发送消息,代码如下:
wss.on('connection', (ws) => { console.log('client connected'); ws.send('hello client'); ws.on('message', (message) => { console.log(`message received: ${message}`); }); });
在以上代码中,我们在客户端连接建立后,向客户端发送了一条消息。
最后,我们可以将上述代码结合 Express.js 的路由功能,实现 WebSocket 服务器的完整使用示例,代码如下:
// javascriptcn.com 代码示例 const express = require('express'); const WebSocket = require('ws'); const app = express(); app.use(express.static('public')); const server = app.listen(3000, () => { console.log('server started'); }); const wss = new WebSocket.Server({ server }); wss.on('connection', (ws) => { console.log('client connected'); ws.send('hello client'); ws.on('message', (message) => { console.log(`message received: ${message}`); ws.send(`echo: ${message}`); }); }); console.log('websocket server started');
在以上示例中,我们为 Express.js 应用添加了静态文件目录,然后在创建 WebSocket 服务器时,为客户端建立连接,并向客户端发送了一条消息,然后处理了客户端发送过来的消息,并将其返回给客户端。
总结
本文介绍了如何在 Express.js 中使用 WebSocket,通过 ws
模块实现了 WebSocket 服务器与客户端之间的双向通信,并通过示例代码介绍了 WebSocket 服务器的完整使用过程,希望能够对大家有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653eb3057d4982a6eb81c501