在前端开发中,经常会使用 WebSocket 协议来实现实时通信功能。而使用 WebSocket 需要开启 WebSocket 服务端来接受连接请求并处理数据传输。在 Node.js 开发中,可以使用 npm 包 websocket 来实现 WebSocket 服务端。而本文要介绍的是 websocketserverhelper 这个 npm 包,它可以让你更方便地创建 WebSocket 服务端。
websocketserverhelper 简介
websocketserverhelper 是一个基于 websocket 包的 npm 包。它提供了一些辅助方法,使得开发 WebSocket 服务端更加方便,比如可以通过简单的配置来开启多个 WebSocket 监听端口、自定义心跳包等。
安装 websocketserverhelper
可以通过 npm 安装 websocketserverhelper:
npm install --save websocketserverhelper
使用 websocketserverhelper
基本用法
在使用 websocketserverhelper 之前,需要先引入 websocket 包:
const WebSocket = require('websocket').server; const WebSocketServerHelper = require('websocketserverhelper');
接下来,可以使用 WebSocketServerHelper 来创建 WebSocket 服务端:
const server = new WebSocketServerHelper({ port: 8080, handleData: function(message, client) { console.log(message.utf8Data); } });
在这个例子中,创建了一个监听 8080 端口的 WebSocket 服务端,同时定义了一个处理数据的函数 handleData,在该函数中输出了客户端发送的数据。
开启多个 WebSocket 监听端口
通过 websocketserverhelper,可以很方便地开启多个 WebSocket 监听端口:
const server = new WebSocketServerHelper({ ports: [8080, 8081], handleData: function(message, client) { console.log(message.utf8Data); } });
在这个例子中,开启了两个 WebSocket 监听端口 8080 和 8081。
自定义心跳包
websocketserverhelper 支持定义客户端和服务端的心跳包。默认情况下,客户端会每隔 30 秒发送一次心跳包,服务端会每隔 60 秒发送一次心跳包。可以通过配置来自定义心跳包:
-- -------------------- ---- ------- ----- ------ - --- ----------------------- ----- ----- ----------- ----------------- ------- - ------------------------------ -- ---------- - ------- - --------- ------ -------- ---------- ---- ------- -- ------- - --------- ----- -------- ---------- ---- ------- - - ---
在这个例子中,服务端每隔 20 秒发送一次 "heartbeat from server",而客户端每隔 5 秒发送一次 "heartbeat from client"。
使用事件监听
除了在配置中定义 handleData 处理数据,也可以通过监听事件来处理数据。websocketserverhelper 支持以下事件:
- connection:客户端连接时触发。
- message:接收到客户端发送的数据时触发。
- close:客户端关闭连接时触发。
- error:发生错误时触发。
例如:
-- -------------------- ---- ------- ----- ------ - --- ----------------------- ----- ---- --- ----------------------- ---------------- - ---------------- ------ ------------- -------------------- ----------------- - ------------------------------ --- ---
在这个例子中,当客户端连接时,会输出 "New client connected!",当客户端发送数据时,会输出客户端发送的数据。
示例代码
下面是一个完整的 websocketserverhelper 示例代码,它实现了一个简单的聊天室功能:
-- -------------------- ---- ------- ----- --------- - ---------------------------- ----- --------------------- - --------------------------------- ----- ------ - --- ----------------------- ----- ---- --- --- ------- - --- ----------------------- ---------------- - ---------------- ------ ------------- --------------------- -------------------- ----------------- - ------------------------------ -- ---------- --------------------------- - -- -- --- ------- - ---------------------------- - --- --- ------------------ ---------- - ------------------- --------------- ------- - -------------------------- - ------ - --- ------- --- --- ---
在这个例子中,当客户端连接时,会输出 "New client connected!",当客户端发送数据时,会输出客户端发送的数据并向其他客户端广播该消息,当客户端关闭连接时,会输出 "Client disconnected!"。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671068dd3466f61ffde14