Web端即时通讯 Comet Websocket SSE

主流的Web端即时通讯方案大致有4种:传统Ajax短轮询、Comet技术、WebSocket技术、SSE(Server-sent Events)。

一、Comet

含义:是一种服务器推送数据的技术(更高级的ajax技术)

实现方式:长轮询和流;

介绍:

        1、短轮询:

        Web端即时通讯 Comet Websocket SSE_第1张图片

             请求之后服务器立即响应

        2、长轮询

                Web端即时通讯 Comet Websocket SSE_第2张图片

             等待服务器有消息的时候再响应

        3、流:即HTTP流,它在页面的整个生命周期内只使用一个HTTP请求,具体来说就是浏览器向服务器发送一个请求,而服务器保持连接,周期性地向浏览器发送数据

二、SSE

含义:Server-Sent Events,服务器发送事件,是一种实现Comet交互的浏览器API,既支持长轮询、也支持http流

过程:就是浏览器向服务器发送一个HTTP请求,然后服务器不断单向地向浏览器推送“信息”(message)。这种信息在格式上很简单,就是“信息”加上前缀“data: ”,然后以“\n\n”结尾(既是所谓的事件流:通过一个持久的HTTP 响应发送,这个响应的MIME 类型为text/event-stream。响应的格式是纯文本)。

三、WebSocket

含义:是一种网络通信协议。RFC6455 定义了它的通信标准,是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

过程:

Web端即时通讯 Comet Websocket SSE_第3张图片



再附张长轮询的图对比一下


Web端即时通讯 Comet Websocket SSE_第4张图片


区分:SSE和WebSocket的区别

1、WebSocket是全双工通道,可以双向通信,功能更强;SSE是单向通道,只能服务器向浏览器端发送。
2、WebSocket是一个新的协议,需要服务器端支持;SSE则是部署在 HTTP协议之上的,现有的服务器软件都支持。
3、SSE是一个轻量级协议,相对简单;WebSocket是一种较重的协议,相对复杂。
4、SSE默认支持断线重连,WebSocket则需要额外部署。
5、SSE支持自定义发送的数据类型。
6、SSE不支持CORS 

参数url就是服务器网址,必须与当前网页的网址在同一个网域(domain),而且协议和端口都必须相同。WebSocket支持 


补充:通俗易懂的讲解:http://blog.csdn.net/frank_good/article/details/50856585

          超赞的Node.js实现即时通讯代码:http://luoxia.me/code/2016/10/16/%E6%95%B0%E6%8D%AE%E6%8E%A8%E9%80%81%E4%B8%9A%E5%8A%A1%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/

你可能感兴趣的:(前端)