eventsource-parser
这是一个用于服务器发送事件/eventsource的流式解析器,不对实际数据流的获取方式做任何假设。它旨在成为JavaScript环境(如浏览器、node.js和deno)中客户端和polyfills的构建基块。
你可以创建一个解析器实例,并向其"提供"数据块 - 部分或完整的,一旦解析器收到完整的消息,就会发出解析后的消息。对于支持的环境(现代浏览器、Node 18及更高版本),还提供了TransformStream变体。
安装
npm install --save eventsource-parser
使用方法
import {createParser, type ParsedEvent, type ReconnectInterval} from 'eventsource-parser'
function onParse(event: ParsedEvent | ReconnectInterval) {
if (event.type === 'event') {
console.log('收到事件!')
console.log('id: %s', event.id || '<无>')
console.log('name: %s', event.name || '<无>')
console.log('data: %s', event.data)
} else if (event.type === 'reconnect-interval') {
console.log('我们应该将重连间隔设置为 %d 毫秒', event.value)
}
}
const parser = createParser(onParse)
const sseStream = getSomeReadableStream()
for await (const chunk of sseStream) {
parser.feed(chunk)
}
// 如果你想为新的事件流重用解析器,请确保重置它!
parser.reset()
console.log('完成!')
流式使用
import {EventSourceParserStream} from 'eventsource-parser/stream'
const eventStream = response.body
.pipeThrough(new TextDecoderStream())
.pipeThrough(new EventSourceParserStream())
注意,TransformStream是在单独的导出(eventsource-parser/stream
)下公开的,以最大化与不具备TransformStream
构造函数的环境的兼容性。
许可证
MIT © Espen Hovlandsdal