SSE是server-sent events协议简称,SSE协议主要是依托于HTTP链接用来从服务端将消息、信息、事件推动给客户端的协议。
SSE简介
SSE最近突然的被很多人关注还有一个主要原因就是ChatGPT等大模型的聊天类系统就采用了SSE协议。在使用ChatGPT的时候,输入Prompt后的反馈是逐渐的显示在聊天区域的,这部分的实现就是主要基于EventStream的事件流,类似打字机一样输出的,这就是SSE的实现,其实类似一下股票行情推送、期货行情推送都可以使用SSE实现。
SSE采用了long-polling的机制,Client端发送了一个HTTP的请求到Server端,Server端就保持了这个HTTP的链接并周期性的发送消息给Client端。SSE主要解决了Server端不断向Client端发送实时数据的场景需求,因为SSE是基于HTTP协议的所以对于浏览器兼容性非常好。在解决实时传输场景的技术方案中,WebSocket是目前更加广泛的解决方案,虽然SSE和WebSocket都是为了实现实时性传输、低延时通信而出现的协议,但是它们一些区别:
- SSE是基于HTTP协议的长连接,客户端发起请求后会保持连接不断直到服务器主动关闭或者网络通信故障导致断开为止,在连接之上也只是Server端发送数据给Client端的单向通信,在大量高频小数据传输或即时交互的应用中并没有WebSocket高效。
- SSE是基于HTTP协议的,每次传输都是需要消耗一定的带宽,而WebSocket是二进制传输协议,对于带宽消耗就很小。
- 最大的区别就是SSE是单向通信的,WebSocket是双向通信的。所以SSE比较适合解决一些推送类的场景例如股票行情、IoT等,WebSocket就更加