zoukankan      html  css  js  c++  java
  • 即时通讯(一)

    即时通讯(Instant Messaging)是一种基于互联网的即时交流消息的业务

    传统的推荐实现

    • HTTP/1.x不支持服务器主动推送,只能在客户端发起请求后做出响应。(HTTP/2支持服务器主动推送,但是HTTP/2还未全面实施)

                                

    • 轮询   轮询是在特定的时间间隔(如1秒),有客户端对服务器发出请求,了解服务器有没有新的数据,然后有服务器不管有没有新数据都会信息返给客户端 。   缺点:效率低下,浪费资源(必须不停的连接,或者连接始终打开,但是传输HTTP请求,然而HTTP请求可能包含较长的头部,其中正真有效数据可能就一小部分,显然这样会浪费很多的带宽等资源。)
    • Commet(基于长连接的轮询)   
        •  长轮询 长轮询是打开一个连接以后保持,等待服务器推送来的数据再关闭的方式,如果没有数据就不会返回,一致处于等待状态
        •     iframe流iframe 流方式是在页面中插入一个隐藏的iframe,利用其src 属性在服务器和客户端之间建立一条长连接,服务器向ifame传数据(通常是HTML,内有负责插入信息的JavaScript),来实时更新页面。  缺点:需要反复请求数据,长连接比较耗性能。

                           

    • Websocket  HTML定义了web socket协议,能够更好的的节省服务器资源和带宽,并且能够更好地进行如通讯。
      •  WebSocket 是一种在单个TCP连接上进行全双工通信的协议。在WebSocket API 中,浏览器和服务器只需要完成一次握手(不是指建立TCP连接的那个三次握手,是指在建立TCP连接后传输一次握手数据),两者之间就直接可以创建持久化的链接,并进行双向数据传输。

                            

    • 优点

        

    1. 较少的控制开销。在连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小。在不包含扩展的情况下,对于服务器到客户端的内容,此头部大小只有2至10字节(和数据包长度有关);对于客户端到服务器的内容,此头部还需要加上额外的4字节的掩码。相对于HTTP请求每次都要携带完整的头部,此项开销显著减少了。

    2. 更强的实时性。由于协议是全双工的,所以服务器可以随时主动给客户端下发数据。相对于HTTP请求需要等待客户端发起请求服务端才能响应,延迟明显更少;即使是和Comet等类似的长轮询比较,其也能在短时间内更多次地传递数据。

    3. 保持连接状态。与HTTP不同的是,Websocket需要先创建连接,这就使得其成为一种有状态的协议,之后通信时可以省略部分状态信息。而HTTP请求可能需要在每个请求都携带状态信息(如身份认证等)。 更好的二进制支持。Websocket定义了二进制帧,相对HTTP,可以更轻松地处理二进制内容。

    4. 可以支持扩展。Websocket定义了扩展,用户可以扩展协议、实现部分自定义的子协议。如部分浏览器支持压缩等。

    5. 更好的压缩效果。相对于HTTP压缩,Websocket在适当的扩展支持下,可以沿用之前内容的上下文,在传递类似的数据时,可以显著地提高压缩率。

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

    7. 可以发送文本,也可以发送二进制数据。

     

    即时通讯(Instant Messaging)是一种基于互联网的即时交流消息的业务
  • 相关阅读:
    体温上报系统
    Android开发概述和开发工具
    体温上报系统
    CSS padding(填充)
    CSS margin外边距实例
    CSS margin(外边距)
    CSS轮廓outline
    函数对象与闭包
    作业,3.19名称空间作用域
    名称空间/作用域
  • 原文地址:https://www.cnblogs.com/pythonplus/p/11161435.html
Copyright © 2011-2022 走看看