在前端开发中,WebSocket 是一个常用的协议,可以实现即时通信和服务端推送等功能。而使用 WebSocket 协议需要编写服务端代码,而对于前端工程师来说,编写服务端代码比较困难。幸运的是,现在有一些 npm 包可以帮助我们快速地编写服务端代码,本文就为大家介绍一款名为 ws-promise-server 的 npm 包。
简介
ws-promise-server 是一个基于 ws 开发的 WebSocket 服务器 npm 包,它提供了一系列使用 Promise 封装的 WebSocket API,让前端工程师可以更加方便地编写 WebSocket 服务端代码。
ws-promise-server 提供了以下几个 API:
WebSocketServer
: WebSocket 服务器类WebSocket
: WebSocket 类EventEmitter
: 事件处理器类
下面我们将一一介绍它们的用法。
安装
使用 npm 安装 ws-promise-server:
npm install ws-promise-server --save
WebSocketServer 类
WebSocketServer 类是我们使用 ws-promise-server 的入口,我们可以通过它来创建 WebSocket 服务器对象。
在创建 WebSocketServer 对象时,需要传入一个配置对象,其中最重要的是 port
属性,它指定了服务器监听的端口号。
下面是一个使用 WebSocketServer 类创建 WebSocket 服务器的简单例子:
-- -------------------- ---- ------- ----- - --------------- - - ----------------------------- ----- ------ - --- ----------------- ----- ---- --- ----------------------- ----------- -- - ------------------- ------------ ---------------- ----- ----------- -------- ------- -------- --- ----------------------- ------ -- - ------------------- ---- --------- - ------ --- --------------------- -- -- - ------------------- --------------- --- ---
代码解释:
首先,我们从 ws-promise-server 中导入 WebSocketServer 类。
然后,我们创建一个服务器对象,并指定监听端口为 3000。
接着,我们监听
connection
事件,当有客户端连接时,触发该事件,其中的webSocket
参数是一个 WebSocket 对象,我们可以操作它。在
connection
事件的回调函数中,我们给客户端发送了一个GREETING
类型的消息,并监听了message
和close
事件。当客户端发送消息时,我们输出消息内容。
当客户端关闭连接时,我们输出断开连接的消息。
WebSocket 类
WebSocket 类表示一个 WebSocket 对象,它提供了一系列可以操作 WebSocket 的方法和属性。
我们一般是在 connection
事件的回调函数中接收到 WebSocket 对象,然后在该对象上操作,如发送消息等。
下面是一个使用 WebSocket 类发送消息的简单例子:
server.on('connection', (webSocket) => { webSocket.send({ type: 'GREETING', message: 'Hello, client!' }); });
代码解释:
在 connection
事件的回调函数中,我们调用 send
方法发送了一条消息,这里发送的消息为一个 JSON 对象。
EventEmitter 类
EventEmitter 类是一种常用的事件处理器,它可以让我们在代码中自定义事件,并在事件触发时执行回调函数。
ws-promise-server 中的 WebSocketServer 和 WebSocket 类都是 EventEmitter 的派生类,它们也提供了一些自定义事件。
例如,当我们想要发送群组消息时,可以通过自定义事件来实现:
-- -------------------- ---- ------- ----------------------- ----------- -- - ------------------------- ----------- -- - ------------------- - ---------- --- -------------------------------- --------- -- - ----- --------- - -------------------- ---------------------------------------- -- - -- ----------------- --- ---------- - --------------------- - --- --- ---
代码解释:
在
joinGroup
事件中,我们将用户加入指定的群组,这里通过给 WebSocket 对象增加一个自定义属性groupName
来实现。在
sendGroupMessage
事件中,我们遍历所有客户端,并只给群组中的客户端发送消息。在客户端中,可以通过发送
joinGroup
事件,来将自己加入群组;通过发送sendGroupMessage
事件,来给群组内的所有客户端发送消息。
示例代码
完整的 ws-promise-server 示例代码如下:
-- -------------------- ---- ------- -- --------- ----- - ------------- ---------- --------------- - - ----------------------------- ----- ------ - --- ----------------- ----- ---- --- ----------------------- ----------- -- - ------------------- ------------ ---------------- ----- ----------- -------- ------- -------- --- ----------------------- ------ -- - ------------------- ---- --------- - ------ --- --------------------- -- -- - ------------------- --------------- --- ------------------------- ----------- -- - ------------------- - ---------- --- -------------------------------- --------- -- - ----- --------- - -------------------- ---------------------------------------- -- - -- ----------------- --- ---------- - --------------------- - --- --- ---
-- -------------------- ---- ------- ---- ---------- --- --------- ----- ----- ---------- ------ ----- ---------------- ------------------------ ------------ ------- ------ ---- ----------------------- -------- ----- --------- - --- --------------------------------- ------------------------------------- ------- -- - ----- ------- - ----------------------- ------ -------------- - ---- ----------- ----------------------------- ------ -------- --------------------- - --- -------- ------------------ - ----- ------- - ----------------------------------------- ------------------------------------ - -------- ----------- - ----- --------- - --------------------------------------- ------------------------------- - -------- -------------------- - ----- ---------- - --------------------------------------- -------------------- -- ---- - -------- - --------- ------ ----------- ---------- ------------------ ------ ------- -------------------------- -------------- ------ ----------- ------------ ---------------------- ------- --------------------------------- ----- ---------------- ------- -------
在终端中使用 node server.js
启动服务器。在浏览器中打开 index.html
文件,就可以访问 WebSocket 服务器,并实现基本的群组功能。
总结
本文介绍了 npm 包 ws-promise-server 的使用教程,包括 WebSocketServer、WebSocket 和 EventEmitter 三个类的用法,以及如何实现基本的群组功能。
ws-promise-server 的使用可以让前端工程师更加方便地编写 WebSocket 服务端代码,在实现即时通信和服务端推送等功能时,可以更加高效地完成应用的编写。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671158dd3466f61ffe628