WebSocket 协议在2008年诞生,2011年成为国际标准。现在所有浏览器都已经支持了。WebSocket 的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话。

HTTP 有 1.1 和 1.0 之说,也就是所谓的 keep-alive ,把多个 HTTP 请求合并为一个,但是 Websocket 其实是一个新协议,跟 HTTP 协议基本没有关系,只是为了兼容现有浏览器,所以在握手阶段使用了 HTTP 。

WebSocket 的其他特点:

  • 建立在 TCP 协议之上,服务器端的实现比较容易。
  • 与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
  • 数据格式比较轻量,性能开销小,通信高效。
  • 可以发送文本,也可以发送二进制数据。
  • 没有同源限制,客户端可以与任意服务器通信。
  • 协议标识符是ws(如果加密,则为wss),服务器网址就是 URL

HTTP特点:

HTTP 的生命周期通过 Request 来界定,也就是一个 Request 一个 Response ,那么在 HTTP1.0 中,这次 HTTP 请求就结束了。

在 HTTP1.1 中进行了改进,使得有一个 keep-alive,也就是说,在一个 HTTP 连接中,可以发送多个 Request,接收多个 Response。但是请记住 Request = Response, 在 HTTP 中永远是这样,也就是说一个 Request 只能有一个 Response。而且这个 Response 也是被动的,不能主动发起。

webSocket:

WebSocket 是基于 HTTP 协议的,或者说借用了 HTTP 协议来完成一部分握手。

4-1、ajax轮询

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

4-2、long poll

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

4-3、WebSocket

当服务器完成协议升级后(HTTP->Websocket),服务端就可以主动推送信息给客户端

最新文章

  1. Spring自定义缓存管理及配置Ehcache缓存
  2. 二分+最短路判定 BZOJ 2709: [Violet 1]迷宫花园
  3. OpenXml入门----给Word文档添加表格
  4. 关于Tcp,为什么一定要进行三次握手呢?
  5. (转)Android SlidingTabLayout定制分割线和指示条颜色
  6. 如何在Ubuntu 13.04中升级到 GNOME 3.8
  7. 读logback源码系列文章(五)——Appender --转载
  8. java之sleep、wait、yield、join、notify乱解
  9. qemu 的方式安装debian 模拟powerpc
  10. BCTF赛后
  11. zoj 3787 Access System
  12. 取distinct数据同时还取其他字段
  13. Go 语言指向指针的指针
  14. Python之Mock的入门
  15. Visual Studio上编译ncnn
  16. Revit对齐工具之多重对齐
  17. 操作argc, argv的经典写法
  18. javaBean分析
  19. To LACP or not to LACP (on a 5.1 vDS)
  20. Maven编译出现“[ERROR] java.lang.OutOfMemoryError: Java heap space”

热门文章

  1. 日常Java 2021/10/19
  2. 学习java 6.29
  3. 使用Redis实现令牌桶算法
  4. Linux命令之用户权限管理
  5. Spring.DM web开发环境搭建
  6. mybatis处理集合、数组参数使用in查询等语句的两种方法
  7. yaml 配置文件的语法。
  8. jQuery - 的几种删除方法,还有他们的区别
  9. springboot项目启动慢,怀疑jdk有问题
  10. Apache log4j2-RCE 漏洞复现(CVE-2021-44228)