对于很多初次接触Web端即时通讯技术的人来说,WebSocket是个很新的概念,但无疑它也是当前Web端即时通讯技术中最热门的关键词。随便点开一篇文章,只要说打算开发Web端即时通讯类应用,老司机们无一例外推荐的都是WebSocket。
那么好了,我知道应该用WebSocket,但本着知其然知其所以然的码农习惯,我还是需要了解下面这些问题:
Socket 和 WebSocket 有哪些区别和联系?
WebSocket 和 HTML5 是什么关系?
必须在浏览器中才能使用 WebSocket 吗?
WebSocket 能和 Socket 一样传输 raw 数据么?
WebSocket 和 Socket 相比会多耗费流量么?
但是,目前网上全面介绍这两种协议的中文文章并不多,或者说不够全面。我无法找到一篇文章能解决上面的所有问题。因此,我写了本文,把找到的 Socket 和 WebSocket 的相关资料做一个梳理,以方便理解。
WebSocket 是为了满足基于 Web 的日益增长的实时通信需求而产生的。在传统的 Web 中,要实现实时通信(比如网页的QQ,聊天系统等),通用的方式是采用 HTTP 协议不断发送请求(按照以往的技术能力通常是采用轮询、Comet技术解决)。
HTTP协议是非持久化的,单向的网络协议&#x