美文网首页
Comet vs SSE vs Websocket

Comet vs SSE vs Websocket

作者: vermouth_Fee | 来源:发表于2019-08-06 17:21 被阅读0次

    在标准的HTTP模型中,服务器无法与客户端启动连接、发送未经请求的HTTP响应给客户端,因此,为了尽快接收异步事件,就需要服务器能在不等待的情况下向客户端发送更新消息,目前主要存在以下几种方法:

    长/短轮询:(客户端拉动)

    Iframe流:(服务端推送)

    SSE:(服务端推送)

    Websocket:(服务端推送)

    轮询

    轮询是客户端定期向服务端请求新数据的一种技术,主要分为短轮询和长轮询。

        短轮询: 基于Ajax请求的计时器,固定延时调用;

        长轮询:基于Comet(是一种用于web的推送技术,能使服务器实时地将更新的信息传送到客户端,而无须客户端发出请求),建立连接后,一直等待服务端有数据之后的响应(或超时),返回后再重新连接;

    Iframe流(HTTP流式传输)

    iframe流是在页面中插入一个隐藏的iframe,利用其src属性在服务器和客户端之间创建一条长连接,服务器向iframe传输数据(通常是HTML,对客户端js的调用)来实时更新页面。

    Tip:轮询和Iframe流都属于Comet,一种用于web的推送技术,能使服务器实时地将更新的信息传送到客户端,而无需客户发出请求

    SSE

    Server-Send Events 实现了客户端请求服务端,然后服务端利用与客户端建立的这条通信连接push数据给客户端,客户端接收数据并处理。

    本质:以流信息的方式通信,完成一次用时很长的下载。

    特点:

        1. 使用HTTP协议,现有的服务器软件都支持;

        2. 轻量级,使用简单;

        3. 默认支持断线重连,Websocket需要自己实现;

        4. 一般只用来传送文本,二进制数据需要编码后传送;

        5. 支持自定义发送的消息类型。

    Websocket

    Websocket是一种应用层协议,提供了客户端和服务端之间全双工通信机制。

    特点:

         1. 服务器可以主动向客户端推送消息,客户端也可以主动向服务器发送信息;

         2. 建立在TCP协议之上,服务器端的实现比较容易;

         3. 没有同源限制,客户端可以与任意服务器通信;

         4. 协议标识符是ws(如果加密,则为wss),服务网址就是URL

         5. 默认支持传送二级制数据,也可以传输文本。

    优缺点及适用场景对比

    相关文章

      网友评论

          本文标题:Comet vs SSE vs Websocket

          本文链接:https://www.haomeiwen.com/subject/edolmxtx.html