概述
express-ws-event-bus 是一款基于 WebSocket 和 Express 的事件总线库,它可以让你在前端和后端之间建立起稳定、高效的通信机制,从而实现近实时的数据传输和响应。它支持订阅-发布模式和点对点通信,可以轻松地扩展到任意规模的应用程序。
本文将介绍 express-ws-event-bus 的使用方法和实例,希望能为前端开发者提供一些帮助和指导。
安装
首先,在你的项目目录下安装依赖:
$ npm install express express-ws express-ws-event-bus --save
然后,创建一个 app.js
文件,配置 express 和 express-ws:
const express = require('express'); const expressWs = require('express-ws'); const app = express(); expressWs(app);
基本使用
接下来,我们来创建一个事件总线对象:
const EventBus = require('express-ws-event-bus'); const eventBus = new EventBus();
然后,我们就可以在客户端和服务器之间建立 WebSocket 连接,从而实现实时通信。
例如,在前端代码中,我们可以这样创建一个 WebSocket:
const ws = new WebSocket('ws://localhost:3000');
然后,在服务器端,我们就可以使用 eventBus.emit()
方法向客户端发送消息了:
eventBus.emit(ws, 'hello', { name: 'John' });
在客户端,我们可以监听 'hello' 事件,接收服务器端发送的消息:
ws.addEventListener('message', (event) => { const { type, payload } = JSON.parse(event.data); if (type === 'hello') { console.log(`Hello, ${payload.name}!`); } });
基本 API
emit(ws, type, payload)
向指定 WebSocket 连接发送消息。
ws
:WebSocket 对象,表示要发送消息的目标type
:字符串,消息类型payload
:任意类型,消息体
eventBus.emit(ws, 'hello', { name: 'John' });
broadcast(type, payload)
向所有 WebSocket 连接发送消息。
type
:字符串,消息类型payload
:任意类型,消息体
eventBus.broadcast('hello', { name: 'John' });
subscribe(ws, type, callback)
订阅指定 WebSocket 连接的消息。
ws
:WebSocket 对象,表示要订阅消息的来源type
:字符串,消息类型callback(payload)
:回调函数,表示接收到消息后的处理函数。payload
参数表示消息体。
eventBus.subscribe(ws, 'hello', (payload) => { console.log(`Hello, ${payload.name}!`); });
unsubscribe(ws, type)
取消订阅指定 WebSocket 连接的消息。
ws
:WebSocket 对象,表示要取消订阅消息的来源type
:字符串,消息类型
eventBus.unsubscribe(ws, 'hello');
示例代码
下面是一个完整的示例代码,它演示了如何使用 express-ws-event-bus 在客户端和服务器之间建立实时通信。你可以将它复制到你的项目中,运行一下试试看。
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --------- - ---------------------- ----- -------- - -------------------------------- ----- --- - ---------- ----- -------- - --- ----------- --------------- ---------------------------------- ----------- ---- -- - ---------------------- ------------ -- -- ------- -- ---------------------- -------- --------- -- - ------------------- ------------------- --- -- ------- ---------------- --------- -- - ---------------------- ------------- --- -- ------- -------------- -- -- - ---------------------- --------------- -- ---- ------- -- ------------------------ --------- --- -- -------- ----------------- -------- - ----- ------ --- --- ----- ---- - ---------------- -- ----- ---------------- -- -- - ------------------- ------- -- -------------------------- ---
在客户端代码中,你可以这样创建 WebSocket:
const ws = new WebSocket('ws://localhost:3000');
然后,你就可以监听 'hello' 事件来接收服务器端发送的消息:
ws.addEventListener('message', (event) => { const { type, payload } = JSON.parse(event.data); if (type === 'hello') { console.log(`Hello, ${payload.name}!`); } });
结语
本文介绍了 express-ws-event-bus 的基本使用方法和示例代码,并提供了详细的 API 文档和指导意义。希望本文能帮助到前端开发者,让你们在实际项目中应用这个高效、可靠的事件总线库。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005739a81e8991b448e98c8