
为公司写的IM利用的是WebSocket来实现的,那么为什么要采取WebSocket而不是HTTP或者TCP了?
HTTP是典型的请求响应模型,服务端不能主动的往客户端推送消息。HTTP是典型的无状态,但是WebSocket是长连接,只要将服务状态同Channel绑定在一起就可以是有状态的。TCP编程对移动端的各位同事要求太高,而且协议太过底层,开发难度有些大,同时我们的IM产品的用户远没有达到千万级别,对性能的要求也不极致。综上选用WebSocket作为IM的底层技术。
20200719 补充
Http的无状态带来的好处是可以方便扩容,一旦是有状态的,那么扩容就是问题。
所以后期服务扩容的时候,需要好好设计。
Netty、Tomcat、Jetty这些框架都有实现WebSocket,不过单论性能而言,Netty无疑是最强大的,所以最终采用Netty来实现WebSocket,具体细节我们下一篇文章见。