驽马十驾 驽马十驾

驽马十驾,功在不舍

目录
IM系列1:为什么使用WebSocket作为IM底层技术!?
/  

IM系列1:为什么使用WebSocket作为IM底层技术!?

为公司写的IM利用的是WebSocket来实现的,那么为什么要采取WebSocket而不是HTTP或者TCP了?

  • HTTP是典型的请求响应模型,服务端不能主动的往客户端推送消息。
  • HTTP是典型的无状态,但是WebSocket是长连接,只要将服务状态Channel绑定在一起就可以是有状态的。
  • TCP编程对移动端的各位同事要求太高,而且协议太过底层,开发难度有些大,同时我们的IM产品的用户远没有达到千万级别,对性能的要求也不极致。

综上选用WebSocket作为IM的底层技术。

20200719 补充
Http的无状态带来的好处是可以方便扩容,一旦是有状态的,那么扩容就是问题。
所以后期服务扩容的时候,需要好好设计。

NettyTomcatJetty这些框架都有实现WebSocket,不过单论性能而言,Netty无疑是最强大的,所以最终采用Netty来实现WebSocket,具体细节我们下一篇文章见。

骐骥一跃,不能十步。驽马十驾,功在不舍。