各类“服务器推”技术原理与实例(Polling/COMET/SSE/WebSocket)
简单来讲
主要是4中方法: 轮询、COMET、SSE (Server-Sent Events)、WebSocket
轮询简单易实现,问题是连接数量多会挤爆服务器
COMET 包含两种: 基于HTTP的长轮询(long-polling)、基于iframe的长连接流(stream)模式
SSE (Server-Sent Events) 是HTML5标准中的一部分。其实现原理类似于我们在上一节中提到的基于iframe的长连接模式。
HTTP响应内容有一种特殊的content-type —— text/event-stream,该响应头标识了响应内容为事件流,客户端不会关闭连接,而是等待服务端不断得发送响应结果。
SSE规范比较简单,主要分为两个部分:浏览器中的EventSource对象,以及服务器端与浏览器端之间的通讯协议。
WebSocket与http协议一样都是基于TCP的。WebSocket其实不仅仅限于“服务器推”了,它是一个全双工的协议,适用于需要进行复杂双向数据通讯的场景。因此也有着更复杂的规范。