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