WebSocket是一种协议,全双工(服务器可以主动发起请求)持久化(服务器端会记录客户端的状态)连接,在HTTP协议中,服务器只能对客户端请求做出应答,而不能主动与服务器进行沟通。WebSocket连接的建立需要到HTTP协议,具体见WebSocket原理--知乎 ,区别见下图:
具体分析见阮一峰的WebSocket教程。
由上文,我们发现WebSocket的用法复杂(详见点击打开链接,其中展示了WebSocket的服务器端和客户端的代码,可见使用的繁杂程度,不仅效率低,且编码量很大),且不是所有的浏览器都支持WebSocket(详见下图),故而在一般使用过程中,都使用其封装。
前端一些比较常见的封装有:stomp、sockjs、sock.io。