WebSocket: 优点: 1. 可以实现实时通信,无需轮询。 2. 支持双向通信,服务端可以主动向客户端发送消息。 3. 类似于TCP协议,可保证消息的可靠性。 4. 可支持更高的并发量。 缺点: 1. 需要浏览器和服务端都支持WebSocket协议。 2. 建立连接时需要耗费更多的时间和带宽。 SSE (Server-Sent Events): 优点: 1. 可以实现服务器向浏览器主动发送事件,从而实现实时通信。 2. SSE可以支持多个事件的串行传输。 3. 在服务器端使用Push API,可以更容易地推送事件。 缺点: 1. SSE仅支持单向通信,只能服务器向客户端发送消息。 2. 对于非常频繁的传输,服务器压力可能会比WebSocket大。 HTTP Chunked: 优点: 1. HTTP Chunked可以支持向客户端实时发送数据。 2. 在HTTP协议下,Chunked不需要客户端和服务端均支持某个独立的协议。 缺点: 1. Chunked不是一个用于实时通信目的的协议。 2. 与持久连接不同,每个消息都需要创建新连接,这将导致连接过多的问题。 3. 即使你销毁了连接,服务端和客户端之间的请求和响应仍然会花费多于完全打开的长连接的时间。