//理论部分转载自:https://www.jianshu.com/p/95d259b05c67
谈到Web实时推送,就不得不说WebSocket。谈到Web实时推送,就不得不说WebSocket。Comet又可细分为两种实现方式,一种是长轮询机制,一种称为流技术,这两种方式实际上是对轮询技术的改进,这些方案带来很明显的缺点,需要由浏览器对服务器发出HTTP request,,大量消耗服务器带宽和资源。
面对这种状况,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽并实现真正意义上的实时推送。
1. wbesocket是什么?
WebSocket是HTML5出的东西(协议)
可以把 WebSocket 看成是 HTTP 协议为了支持长连接所打的一个大补丁,它和 HTTP 有一些共性,是为了解决 HTTP 本身无法解决的某些问题而做出的一个改良设计。WebSocket不是HTTP协议,HTTP只负责建立WebSocket连接。
- WebSocket协议本质上是一个基于TCP的 独立的协议,能够在浏览器和服务器之间建立双向连接,以基于事件的方式,赋予浏览器实时通信能力。
- 协议名为"ws",这意味着一个websocket连接地址会是这样的写法:ws://**。websocket协议本质上是一个基于tcp的协议
- 是服务器实现的。客户端通过html5与服务器交互。http是不持续连接的,而websocket是。必须服务器支持websocket协议,才有效。对于不支持websocket服务的服务器,你客户端怎么写代码都没用。
WebSocket实战:
Web领域的实时推送技术,这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新。它有着广泛的应用场景,比如双人对战小游戏、在线聊天室、在线客服系统、评论系统、WebIM等。
2.websocket解决了什么问题?
在了解这个之前我先来科普一下:
了解背景: 在以前 HTTP 协议中所谓的 **keep-alive connection** 是: 指在一次 TCP 连接中完成多个 HTTP 请求,但是对每个请求仍然要单独发 header; 所谓的 polling : 是指从客户端(一般就是浏览器)不断主动的向服务器发 HTTP 请求查询是否有新数据 。 这两种模式有一个共同的缺点: 就是除了真正的数据部分外,服务器和客户端还要大量交换 HTTP header,信息交换效率很低。 它们建立的“长连接”都是伪.长连接. 只不过好处是不需要对现有的 HTTP server 和浏览器架构做修改就能实现。