在前端开发中,我们经常需要使用 WebSocket 进行双向通信,而 Express.js 是一款非常受欢迎的 Node.js Web 应用程序框架。@small-tech/express-ws
是一个基于 Express.js 的 WebSocket 服务器插件,它可以帮助我们快速搭建 WebSocket 服务器。
安装
我们可以通过 npm 安装 @small-tech/express-ws
这个包:
npm install @small-tech/express-ws
使用
使用 @small-tech/express-ws
需要两部分组成:标准的 Express.js 应用程序和 ws
WebSocket 实例。首先我们来创建一个 Express.js 应用程序:
const express = require('express'); const app = express();
然后,我们需要创建一个 WebSocket 实例。@small-tech/express-ws
已经为我们封装了这个过程,我们可以直接使用 app.ws()
方法创建 WebSocket 实例:
const express = require('express'); const app = express(); const expressWs = require('@small-tech/express-ws')(app); app.ws('/', (ws, req) => { // WebSocket 响应逻辑 });
在上面的例子中,我们创建了一个 WebSocket 实例,并在根路径 /
上监听 WebSocket 请求。当有客户端连接时,我们可以在回调函数中处理 WebSocket 的各种事件和逻辑。
ws
参数是一个 WebSocket 实例,req
参数是一个 HTTP 请求对象。
发送消息
要在服务器端向客户端发送消息,我们可以使用 ws.send()
方法。例如,我们可以在处理 WebSocket 请求的回调函数中发送一个欢迎消息:
app.ws('/', (ws, req) => { ws.send('欢迎来到我的 WebSocket 服务器!'); });
接收消息
要在服务器端接收客户端发送的消息,我们需要监听 message
事件。例如,我们可以在处理 WebSocket 请求的回调函数中监听 message
事件并输出客户端发送的消息:
app.ws('/', (ws, req) => { ws.on('message', message => { console.log(`收到客户端发送的消息:${message}`); }); });
广播消息
要在服务器端向所有客户端广播消息,我们需要保存所有连接到服务器的 WebSocket 实例,并在接收到消息后循环发送给所有客户端。例如,我们可以创建一个数组保存所有 WebSocket 实例,并在接收到客户端发送的消息时广播给所有客户端:
-- -------------------- ---- ------- ----- --------- - -------------- ----- ------- - ------------------- ----- --- - ---------- ----- --------- - --------------------------------------- ----- --- - ------------------- ----- ------- - --- ------ -------------------- -- -- - ---------------- --- ----------- ---- ---- -- - ---------------- ------- -- - ------------------------------------- --- ------ ------ -- -------- - ----------------------------- - --- ---
关闭连接
要在服务器端关闭 WebSocket 连接,我们可以调用 ws.close()
方法。例如,我们可以在处理 WebSocket 请求的回调函数中监听 close
事件并输出客户端断开连接的消息:
app.ws('/', (ws, req) => { ws.on('close', () => { console.log('客户端已断开连接!'); }); });
示例代码
以下是一个完整的 @small-tech/express-ws
示例代码,包括发送消息、接收消息、广播消息和关闭连接:
-- -------------------- ---- ------- ----- --------- - -------------- ----- ------- - ------------------- ----- --- - ---------- ----- --------- - --------------------------------------- ----- --- - ------------------- ----- ------- - --- ------ -------------------- -- -- - ---------------- --- ----------- ---- ---- -- - -- ---- --------------- --------- ------- -- ---- ---------------- ------- -- - ------------------------------------- -- ---- --- ------ ------ -- -------- - ----------------------------- - --- -- ---- -------------- -- -- - ------------------- ------------------------- --- --- ---------------- -- -- - ---------------------- ---------- ---
总结
@small-tech/express-ws
是一个方便、快捷的 WebSocket 服务器插件。使用它,我们可以快速搭建 WebSocket 服务器,并且轻松处理 WebSocket 的各种事件和逻辑。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/small-tech-express-ws