简介
@strong-roots-capital/event-source
是一个 Node.js 事件源(EventSource)的实现,它在 Node.js 环境中提供了 Server-Sent Events (SSE) 协议的客户端实现。它包含了一个 EventSource
类,可以方便地与服务器通信并接收来自服务器的事件消息。本教程将会介绍如何使用该包。
安装
npm 安装
npm i @strong-roots-capital/event-source
注意:该包需要 Node.js 版本 >= 8.6.0
使用
-- -------------------- ---- ------- ----- ----------- - --------------------------------------------- ----- -- - --- ------------------------------------ ------------- -- -- - -------------------- -- -------------- --- -- - ------------------- --------- --------- -- -------------- -- -- - -------------------- --
在上面的示例中,我们通过 EventSource
类创建了一个新的事件源实例 es
,并连接到了一个 SSE 服务器。on
方法可以用来注册不同的事件回调,目前支持的事件是:
open
: 当连接建立时触发。event
: 当收到事件消息时触发,回调函数将会得到一个事件对象,包含了type
和data
属性。close
: 当连接关闭时触发。
深入了解
连接选项
EventSource
类有一个选项对象可以传递给构造函数以配置一些连接参数:
const es = new EventSource('http://localhost:3000', { headers: { Authorization: 'Bearer token' } })
上面的代码中,我们通过选项对象传递了一个名为 headers
的字段,它包含了一个 HTTP 请求头对象,用于在连接时将 Authorization
头信息发送给服务器。
目前支持的选项有:
headers
: HTTP 请求头对象。https
: 是否使用 HTTPS 协议。rejectUnauthorized
: 是否禁用自签名证书的认证。默认为true
。
事件注册与注销
使用 on
方法可以注册事件回调,使用 off
方法可以注销某个事件的回调。
const onOpen = () => { console.log('连接已建立') } es.on('open', onOpen) es.off('open', onOpen)
重新连接机制
如果连接中断了,可以通过 reopen
方法尝试重新连接:
const es = new EventSource('http://localhost:3000') es.on('close', () => { console.log('连接已关闭,尝试重新连接') es.reopen() })
默认情况下,每次重连之间的间隔时间为 3 秒钟。如果你想自定义该时间,可以在选项中传递一个名为 retryInterval
的字段:
const es = new EventSource('http://localhost:3000', { retryInterval: 5000 // 5s })
关闭连接
使用 close
方法可以关闭连接。
es.close()
结尾
本教程介绍了 @strong-roots-capital/event-source
的使用方法,希望对大家有所帮助。如果在使用中有任何问题或建议,欢迎在 Github 上反馈。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671d530d0927023822a81