WebSocket如今在Web端即时通讯技术应用里使用广泛,不仅用于传统PC端的网页里,也被很多移动端开发者用于基于HTML5的混合APP里。对于想要在基于Web的应用里添加IM、推送等实时通信功能,WebSocket几乎是必须要掌握的技术。
相比 HTTP 协议来说,WebSocket 协议对大多数后端开发者是比较陌生的。
相对而言:WebSocket 协议重点是提供了服务端主动向客户端发送数据的能力,这样我们就可以完成实时性较高的需求。例如:聊天 IM 即使通讯功能、消息订阅服务、网页游戏等等。
同时:因为 WebSocket 使用 TCP 通信,可以避免重复创建连接,提升通信质量和效率。
友情提示:
这里有个误区,WebSocket 相比普通的 Socket 来说,仅仅是借助 HTTP 协议完成握手,创建连接。后续的所有通信,都和 HTTP 协议无关。
要想使用WebSocket,一般有如下几种解决方案可选:
1)方案一:Spring WebSocket;
2)方案二:Tomcat WebSocket;
3)方案三:Netty WebSocket。
目前笔者手头有个涉及到 IM 即使通讯的项目,采用的是方案三。
主要原因是:我们对 Netty 框架的实战、原理与源码,都相对熟悉一些,所以就考虑了它。并且,除了需要支持 WebSocket 协议,我们还想提供原生的 Socket 协议。
如果仅仅是仅仅提供 WebSocket 协议的支持,可以考虑采用方案一或者方案二,