最近,我发现 Server-Sent 事件作为 WebSockets 的一种更简单的替代方案,用于从服务器进行推送。大多数比较它们的地方(如这里、这里和这里)都说,如果您不需要客户端和服务器之间的全双工通信,那么 WebSockets 就过分了,而 SSE 就足够了。
我的问题是当您确实需要双向通信(例如聊天)时使用 SSE 的缺点是什么,使用常规 ajax 请求从客户端发送消息并使用服务器流接收它们?考虑到我几乎不需要在服务器端进行任何配置即可使用 SSE,这似乎是一个更具吸引力的选择。
SSE相对于 WebSockets 的优势:
与 WebSockets 相比,SSE的缺点:
参考:
与小的 WebSocket 消息相比,Ajax 请求是巨大的。标准 HTTP 请求 (Ajax) 包含大量标头,包括每个请求的 cookie,而 WebSocket 消息只有几个字节。
HTTP (Ajax) 请求的好处是,如果这对您的问题有益,那么它们更容易缓存。