• WebSocket原理与实践(一)---基本原理


    WebSocket原理与实践(一)---基本原理

    一:为什么要使用WebSocket?
    1. 了解现有的HTTP的架构模式:
    Http是客户端/服务器模式中请求-响应所用的协议,在这种模式中,客户端(一般是web浏览器)向服务器提交HTTP请求,服务器响应请求的资源
    (例如HTML页面)和关于页面的附加信息。

    1-1. HTTP的特点是:
    HTTP是半双工协议,也就是说,在同一时刻流量只能单向流动,客户端向服务器发送请求(单向的),然后服务器响应请求(单向的)。服务器不能主动推送数据给浏览器。

    当初这么设计也是有原因的,假如服务器能主动推送数据给浏览器的话,那么浏览器很容易受到攻击,比如一些广告商会主动把一些广告信息强行的传输给客户端。
    半双工的缺点是:效率非常低下。
    比如想实现股票的实时行情,火车票的剩余票数等这些,半双工协议是无法做到的。

    2. 了解HTTP轮询,长轮询和流化。
    一般情况下,浏览器访问网页时,会向页面所在的服务器发送一个HTTP请求,Web服务器确认请求并向浏览器返回响应。但是像股价,实时新闻等到达浏览器
    显示页面时已经过时了,如果用户想要得到最新的实时信息,他们就要不断的刷新页面,这种显然是不切实际的。

    轮询: 轮询是通过浏览器定时的向web服务器发送http的Get请求,服务器收到请求后,就把最新的数据发回给客户端,客户端得到数据后,将其显示出来,然后再定期的重复这一过程,虽然可以满足需求,但是存在一些缺点,比如某一段时间内web服务器没有更新的数据,但是浏览器仍然需要定时的发送Get请求过来询问,那么即浪费了带宽,又浪费了cpu的利用率。
    如下图:

    长轮询: 客户端向服务器请求信息,并在设定的时间段内打开一个连接,服务器如果没有任何信息,会保持请求打开,直到有客户端可用的信息,或者直到
    指定的超时时间用完为止。这个时候,客户端会重新向服务器请求信息。长轮询也可以叫做Comet或反向ajax。它会延长HTTP响应的完成,直到服务器有
    需要发送给客户端的内容,这种技术通常可以叫 "挂起GET" 或 "搁置POST".

    缺点是:
    当信息量非常大的时候,长轮询相对于http轮询并没有明显的性能优势,因为客户端必须频繁地重连到服务器以读取新信息。造成网络的表现和常规轮询相同。

    如下图:

    流化: 在流化技术中,客户端发送一个请求,服务器发送并维护一个持续更新和保持打开的开放响应。每当服务器有需要交付给客户端信息时,它就更新响应
    。但是服务器从不发出完成HTTP响应的请求,从而使链接一直保持打开。在这种情况下,代理和防火墙可能缓存响应,导致信息交付的延迟增加。
    因此许多流化对于存在防火墙和代理的网络是不友好的。

    3. 了解WebSocket
    WebSocket是一种全双工,双向,单套接字连接,使用websocket,http请求变成打开websocket的链接的单一请求,并且重用从客户端到服务器以及
    服务器到客户端的同一连接。

    WebSocket减少了延迟,因为一旦建立起Websocket连接,服务器可以在消息可用时发送他们。和轮询不同的是:WebSocket只发出一个请求,服务器
    不需要等待来自客户端的请求,且客户端可以在任何时候向服务器端发送消息,和轮询相比的话,不管是否有可用消息,每隔一段时间都发送一个请求,
    单一请求大大减少了延迟。

    优点有如下:
    1. WebSocket使实时通信更加有效。能节约带宽,CPU资源并减少延迟。
    2. WebSocket使Web上客户端和服务器之间的通信变得更加的简单。
    3. Websocket是一个底层网络协议,我们可以在它的基础之上构建其他的标准协议。

    WebSocket的应用场景?
    比如聊天,大型多人在线游戏,股票交易应用或实时新闻等。

    二:了解WebSocket的相关API

    见如下文章: http://www.cnblogs.com/tugenhua0707/p/8395669.html

  • 相关阅读:
    ss
    Linux vmstat命令实战详解
    【好书摘要】性能优化中CPU、内存、磁盘IO、网络性能的依赖
    mysql 数据库授权(给某个用户授权某个数据库)
    windows下mysql安装包安装
    053(五十五)
    053(五十四)
    053(五十三)
    053(五十二)
    053(五十一)
  • 原文地址:https://www.cnblogs.com/tugenhua0707/p/8504297.html
Copyright © 2020-2023  润新知