SSE 如何支持二进制数据传输?

· 约 4 分钟读完

简介

Server-Sent Events (SSE) 是一种服务器向客户端发送事件流的技术。这种技术可以用于实现实时通信、通知和监控等场景。SSE 的一个重要特性是支持二进制数据传输,这种方式可以提高传输效率,降低网络带宽的消耗。

实现原理

SSE 使用的协议是 HTTP 协议,而且必须使用长连接。在客户端向服务器发送 SSE 请求时,必须在请求头中携带 Accept 为 text/event-stream 和 Content-Type 为 text/event-stream:

服务器端接收到这种请求后,必须在 HTTP 响应头中使用 Content-Type: text/event-stream 表示响应的格式是 SSE,然后向客户端不断发送如下格式的数据:

其中,data 是 SSE 数据的关键字,后面跟着的是具体的消息体,\n\n 是必须的,表示这条数据的结束。如果要在消息体中传输二进制数据,可以使用如下方式:

这段代码把一个字符串转成 Uint8Array 类型的数据,并在结尾添加 0x0a 表示结束。然后返回给客户端的消息体就是:

这种方式可以保持数据的完整性,可以用来传输图片、音频、视频等二进制数据。

示例代码

客户端:

服务器端:

结语

SSE 是一种实现实时通信的技术,可以用于 Web 应用中的消息推送、通知和监控等场景。它支持二进制数据的传输方式,可以提高传输效率和降低带宽的消耗,值得我们深入学习和应用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67bfded00c976d473a4d138c