想象一下,你和朋友打电话聊天。如果用 HTTP 协议,就像是你每次说话前都要先问:”我能说话吗?”等对方说”可以”了你才能说一句话。说完后又要问:”我还能再说吗?”这样聊天效率太低了,对吧?
这就是 HTTP 协议的工作方式——必须一问一答(3次握手)。虽然很可靠,但对于需要实时通信的应用(比如聊天软件、在线游戏、股票行情)来说,实在太慢了。那么怎么办呢?
WebSocket 的出现就是为了解决这个问题!它就像真正的电话通话,接通后双方随时都能说话,不需要不停地问”我能说话吗”。
他提供了实时的、双向的通信能力,使得客户端和服务器可以即时地交换数据
我这里举个例子对比一下:
假如我在开发一个IM聊天应用,我用HTTP轮询的方式去实现:
 
缺点非常明显反复发送请求,不但效率低下,而且耗费了大量的带宽和CPU资源,没人能够接受这种方案的。
现在我换websock的方式来实现:
 
优势一下就体现出来了,我只需要初始化的时候连接一次,之后的消息可以随时发送和接收。(考虑到稳定性,可以加个心跳包)
所以对于实时通信要求比较高的场景,用ws是个好办法。
哦对了,我最近开发了一个叫
牛马工作器的chrome拓展插件,很好玩哦,感兴趣的话,给我的公众号回复牛马即可免费获取。
 
                     
                     
                        
                        