使用 WebSocket 打造网页 IM 聊天,看不懂就锤爆艿艿的狗头~
Posted 芋道源码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 WebSocket 打造网页 IM 聊天,看不懂就锤爆艿艿的狗头~相关的知识,希望对你有一定的参考价值。
管她前浪,还是后浪?
能浪的浪,才是好浪!
每天 8:55 更新文章,每天掉亿点点头发...
源码精品专栏
-
1. 概述 -
2. Tomcat WebSocket 快速入门 -
3. Spring WebSocket 快速入门 -
666. 彩蛋
“本文在提供完整代码示例,可见 https://github.com/YunaiV/SpringBoot-Labs 的 lab-25 目录。
原创不易,给点个 Star 嘿,一起冲鸭!
1. 概述
相比 HTTP 协议来说,WebSocket 协议对大多数后端开发者是比较陌生的。相比来说,WebSocket 协议重点是提供了服务端主动向客户端发送数据的能力,这样我们就可以完成实时性较高的需求。例如说,聊天 IM 即使通讯功能、消息订阅服务、网页游戏等等。
同时,因为 WebSocket 使用 TCP 通信,可以避免重复创建连接,提升通信质量和效率。例如说,美团的长连接服务,具体可以看看 《美团点评移动网络优化实践》 。
“友情提示:这里有个一个误区,WebSocket 相比普通的 Socket 来说,仅仅是借助 HTTP 协议完成握手,创建连接。后续的所有通信,都和 HTTP 协议无关。
看到这里,胖友一定以为艿艿又要开始哔哔 WebSocket 的概念。哈哈,我偏不~如果对这块不了的胖友,可以阅读如下两篇文章:
-
《理清 WebSocket 和 HTTP 的关系》
“
艿艿:强烈推荐,一定要弄懂。不然,找不到对象。
-
《WebSocket 教程》
在实现提供 WebSocket 服务的项目中,一般有如下几种解决方案:
-
方案一 Spring WebSocket -
方案二 Tomcat WebSocket -
方案三 Netty WebSocket
目前艿艿手头有个涉及到 IM 即使通讯的项目,采用的是方案三。主要原因是,我们对 Netty 框架的实战、原理与源码,都相对熟悉一些。所以就考虑了它。并且,除了需要支持 WebSocket 协议,我们还想提供原生的 Socket 协议。
如果仅仅是仅仅提供 WebSocket 协议的支持,可以考虑采用方案一或者方案二。在使用上,两个方案是比较接近的。相比来说,方案一 Spring WebSocket 内置了对 STOMP 协议的支持。
不过呢,本文还是采用方案二 Tomcat WebSocket 来作为入门示例。咳咳咳,没有特殊的原因,主要是开始写本文之前,艿艿就花了 2 小时使用它写了一个示例。实在是有点懒,不想改。如果能重来,我要选李白,哈哈哈哈~
当然,不要慌,正如艿艿所说,方案一和方案二的实现代码,真心没啥差别。
以上是关于使用 WebSocket 打造网页 IM 聊天,看不懂就锤爆艿艿的狗头~的主要内容,如果未能解决你的问题,请参考以下文章
IM服务器:一个使用imserver服务器进行聊天的web端案例