其实我们所用的程序是要经过两层代理的,即HTTP协议在Nginx等服务器的解析下,然后再传送给相应的Handler(PHP等)来处理。
       简单地说,我们有一个非常快速的接线员(Nginx),他负责把问题转交给相应的客服(Handler)
       本身接线员基本上速度是足够的,但是每次都卡在客服(Handler)了,老有客服处理速度太慢。,导致客服不够。
       Websocket就解决了这样一个难题,建立后,可以直接跟接线员建立持久连接,有信息的时候客服想办法通知接线员,然后接线员在统一转交给客户。

但是Websocket只需要一次HTTP握手,所以说整个通讯过程是建立在一次连接/状态中,也就避免了HTTP的非状态性,服务端会一直知道你的信息,直到你关闭请求,这样就解决了接线员要反复解析HTTP协议,还要查看identity info的信息。
       同时由客户主动询问,转换为服务器(推送)有信息的时候就发送(当然客户端还是等主动发送信息过来的。。),没有信息的时候就交给接线员(Nginx),不需要占用本身速度就慢的客服(Handler)了。

与WebSocket相似但具有缺陷的技术有:

1.ajax轮询 的原理非常简单,让浏览器隔个几秒就发送一次请求,询问服务器是否有新信息。

2.long poll 其实原理跟 ajax轮询 差不多,都是采用轮询的方式,不过采取的是阻塞模型(一直打电话,没收到就不挂电话),也就是说,客户端发起连接后,如果没消息,就一直不返回Response给客户端。直到有消息才返回,返回完之后,客户端再次建立连接,周而复始。

从上面可以看出其实这两种方式,都是在不断地建立HTTP连接,然后等待服务端处理,可以体现HTTP协议的另外一个特点,被动性
何为被动性呢,其实就是,服务端不能主动联系客户端,只能有客户端发起。

ajax轮询 需要服务器有很快的处理速度和资源。(速度)
      long poll 需要有很高的并发,也就是说同时接待客户的能力。(场地大小)

而对于WebSocket来说,只需要经过一次HTTP请求,就可以做到源源不断的信息传送了。(在程序设计中,这种设计叫做回调,即:你有信息了再来通知我,而不是我傻乎乎的每次跑来问你)。这样的协议解决了上面同步有延迟,而且还非常消耗资源的这种情况。整个通讯过程是建立在一次连接/状态中,也就避免了HTTP的非状态性,服务端会一直知道你的信息,直到你关闭请求,这样就解决了接线员要反复解析HTTP协议,还要查看identity info的信息。

浏览网页时,经过三个过程
      1、浏览器经过三次握手与web服务器建立链接,
      2、web服务器返回响应
      3、浏览器通过四次握手主动断开链接

转载于:https://www.cnblogs.com/yedu/p/4766638.html

WebSocket学习相关推荐

  1. websocket学习笔记

    文章目录 websocket学习笔记 实现的方式 websocket学习笔记 WebSocket 是一种网络通信协议.RFC6455 定义了它的通信标准. WebSocket 是 HTML5 开始提供 ...

  2. WebSocket 学习

    项目中之前已经使用过 websocket 进行一些和服务器的实时数据通信,但是对于协议本身并不十分了解,也是借此机会学习一下并分享出来. OSI 位置? 应用层,和 Http 协议是同级关系 为什么需 ...

  3. websocket学习和群聊实现

    WebSocket协议可以实现前后端全双工通信,从而取代浪费资源的长轮询.在此协议的基础上,可以实现前后端数据.多端数据,真正的实时响应.在学习WebSocket的过程中,实现了一个简化版群聊,过程和 ...

  4. WebSocket学习与使用

    1.WebSocket是什么 WebSocket是一种在单个TCP连接上进行全双工通信的协议,其目的是在浏览器和服务器之间建立一个不受限的双向通信的通道,使得服务器可以主动发送消息给浏览器.在HTML ...

  5. python websocket模块_python websocket学习使用

    前言 今天看了一些资料,记录一下心得. websocket是html5引入的一个新特性,传统的web应用是通过http协议来提供支持,如果要实时同步传输数据,需要轮询,效率低下 websocket是类 ...

  6. websocket 学习--简单使用,nodejs搭建websocket服务器,到模拟股票,到实现聊天室

    websocket简介: WebSocket协议是 HTML5 开始提供的一种基于TCP的一种新的全双工通讯的网络通讯协议.它允许服务器主动发送信息给客户端. 和http协议的不同?? HTTP 协议 ...

  7. websocket学习总结记录

    Websocket 1.基本概念 WebSocket是一种网络通信协议. websocket和http 的区别,http的缺陷,只能从客户端发起请求(单项请求)不能从服务器发起请求.如果服务器有连续性 ...

  8. socket.io php 聊天室,WebSocket学习(一)——基于socket.io实现简单多人聊天室

    前言 什么是Websocket呢? 我们都知道在Http协议中,客户端与服务器端的通信是靠客户端发起请求,然后服务器端收到请求再进行回应,这个过程中,客户端是主动的,服务器端是被动的.Websocke ...

  9. 【WebSocket】WebSocket学习笔记

    目录 什么是WebSocket? 为什么需要WebSocket WebSocket与HTTP的区别 WebSocket协议的原理 WebSocket的优缺点 WebSocket应用场景 WebSock ...

最新文章

  1. python 最小二乘回归 高斯核_最经典的回归模型参数估计算法—最小二乘
  2. 查看mysql是否繁忙_Oracle系统繁忙时,快速定位
  3. spring— Spring与Web环境集成
  4. 项目管理(4):备战pmp
  5. 【转】WPF XAML X名称空间详解
  6. Patsy库查看使用公式语法建模后的输入特征X 与 预测Y
  7. C++ 拷贝构造 与 赋值运算符重载
  8. Java如何调用webservice
  9. 苹果iphone手机如何隐藏文件夹名称 iphone隐藏文件夹标题方法图解
  10. linux shell 切换目录,如何在Shell中快速切换目录?
  11. OAI配置eNB时error解决
  12. vpython_vpython初探
  13. mixpanel实验教程(2) 支持你啊
  14. 百度云推送-服务端 C# SDK
  15. 简历准备(一)—— TPLink
  16. Android自定义view 滑动开关 支持左右滑动 适用于listview
  17. 希腊字母英文简写与常用指代意义
  18. 虚拟机 安装 CUDA 可行性说明
  19. 卷积神经网络以及经典网络模型的浅谈
  20. 从医记之程序员请呵护你的胃

热门文章

  1. Linux复习资料——一篇文章学会安装Java(免环境配置)以及tomcat服务
  2. JavaWeb课程复习资料(四)——创建Servlet
  3. ubuntu下无法在目录下创建文件夹,权限不足解决办法
  4. HTTP响应头和请求头信息对照表(一篇全)
  5. 禁止修改varchar到int|[运维规范]
  6. 塔式服务器、机架式服务器、刀片服务器区别小结
  7. 在linux下安装db2全过程
  8. verilog中timescale
  9. web测试点总结---UI、兼容、功能、交互、安全、性能、接口测试
  10. Wi-Fi模块的设置方法汇总