什么是 primus-emitter?
primus-emitter 是一个 npm 包,是 Primus 库的一个插件,用于在客户端-服务器之间实现实时双向通信。该插件允许您发送指定事件(包含数据)从服务器到客户端,以及从客户端向服务器发送指定事件(包含数据)。
安装 primus-emitter
您可以使用 npm 安装 primus-emitter 包,安装命令如下:
npm install primus-emitter --save
在服务器上使用 primus-emitter
首先,在您的项目中导入 primus 和 primus-emitter 模块,如下所示:
const Primus = require('primus'); const Emitter = require('primus-emitter');
接下来,初始化 Primus 实例:
const primus = new Primus(server, options);
其中 server 是您的 http 服务器实例,options 是配置选项,您可以根据需要进行配置。接下来,将 primus-emitter 插件附加到 Primus 实例上:
primus.plugin('emitter', Emitter);
现在,您已可将 primus-emitter 插件用于您的服务器端代码。
在服务器端,您可以使用 primus.emits()
方法将事件和数据从服务器发送到客户端:
primus.emits('someEvent', { someData: 'hello world' });
该方法除了发送事件和数据,还可以接受更多的参数,以配置 Primus 实例的行为。该方法的参数列表如下:
- eventName: 要发送的事件名称。
- data: 要发送的数据。
- callback: 作为正常回调的函数。
- rooms: 要发送到的房间列表。
- flags: 指定传输过程中要使用的标记
- except: 要排除的客户端列表。
还可以使用primus.room(roomName)
方法创建一个新房间,使用 primus.in(roomName)
方法获取所有已连接到该房间的客户端。
const room = primus.room('myRoom'); room.client('user1').emits('someEvent', { someData: 'hello world' });
在上面的代码中,someEvent
事件和 hello world
数据将被发送到一个名为 myRoom
的房间中,该房间已连接到名为 user1
的客户端。
在客户端上使用 primus-emitter
首先,在您的 HTML 页面中导入 Primus 库和 primus-emitter 插件,如下所示:
<script src="/primus/primus.js"></script> <script src="/primus/primus-emitter.js"></script>
接下来,您需要初始化 Primus 实例:
const primus = Primus.connect(endpoint, options);
其中 endpoint 是您的服务器端点,options 是配置选项,您可以根据需要进行配置。接下来,您需要将 primus-emitter 插件附加到 Primus 实例上:
const emitter = new Emitter(primus);
现在,您已可以在客户端上使用 primus-emitter 插件了。
在客户端中,您可以使用 emitter.on()
方法侦听从服务器接收的事件:
emitter.on('someEvent', (data) => { console.log(data.someData); // hello world });
在上面的代码中,我们监听 someEvent
事件,并在接收到事件时打印 someData
属性的值。
您还可以使用 emitter.send()
方法将事件和数据从客户端发送到服务器:
emitter.send('someEvent', { someData: 'hello world' });
这将发送 someEvent
事件和 hello world
数据到服务器上。
示例代码
下面是一个完整的客户端-服务器应用程序,其中使用了 primus-emitter 插件。该应用程序使用 Primus 和 primus-emitter 实现了实时的双向通信。
服务器端代码
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ------------------ ----- ------- - -------------------------- ----- ------ - -------------------- -- --- ------ -- ----- ------ - --- -------------- --- ---- ----- -- -- -------------- -- ------------------------ --------- -- ------- ----------------------- ------- -- - ----------------- ------ -- - ----------------- ---------------- ------ ------ ---------------------------------------------------- - -------- ----- ---------------- ------ ---- --- --- --- ------------------- -- -- - ------------------- -- ------- -- ---- ------- ---
客户端代码
-- -------------------- ---- ------- --------- ----- ------ ------ --------------------- ---------- ------- --------------------------------- ------- ----------------------------------------- ------- ------ ------ ------ ----------- --------------- --------------------- ------- ------------------------- ------- --- ------------------- -------- ----- ------ - ---------------------------------------- ----- ------- - --- ---------------- ----------------- -- -- - ---------------------- -- --------- --- ----------------- ------ -- - -- ----------- --- -------- - ----- ------- - ----------------------------- ------------------- - ------------------ --------------------------------------------------------- - --- --------------------------------------------------------- ------- -- - ----------------------- ----- -------- - -------------------------------------------------------------- -- ---------- - --------------------- - -------- --- - --- --------- ------- -------
在上面的示例代码中,我们使用 primus-emitter 插件实现了一个实时的聊天应用程序,当用户登录时将会向所有用户发送通知消息。
总结
primus-emitter 插件是一个强大的工具,可以帮助您在客户端和服务器之间实现实时的双向通信。通过在服务器和客户端上使用它,您可以轻松地发送事件和数据,侦听事件并执行其他任务,以实现完善的实时用户体验。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/73119