这是一个创建于 1829 天前的主题,其中的信息可能已经有所发展或是发生改变。
曾经有一个银行的客户项目中需要用到 webIM 聊天及客服功能,客户的需求是网站内的用户可以互相加好友,可以建群,可以发图片,发表情,还可以像客服系统一样可以向任何店家发起回话。
最初的想法是想找一个比较成熟的开源的 webIM 产品集成到项目中,对比了几个国外的开源项目和国内的项目,都不满意,要么就是集成到系统不方便,要么就是代码,架构质量较低,很多都还是基于轮询的,没法满足我的需求,索性下定决心自己开发。
为了能比较快的上线完成这个 webIm 的模块,做了以下选型和技术思考。
1、前后端通信肯定要基于 socket,但是 socket 不能自己造轮子,所以选择了 workman 封闭式 socket 框架,当然也可以选择 swoole,但是 swoole 对于通信聊天方面的封装没有 workman 方便,swoole 需要进行比较大的二次封装。
2、UI 前端也同样选择了一套现成的 UI 界面。
3、该 webIM 系统需要与其他系统能够方便的进行集成及二次开发,如鉴权,用户体系融合等
4、需要上线短信重连
5、需要分布式扩展,支持高并发,这点 workman 已经可以支持。
6、需要一个管理后台,管理聊天用户,聊天记录,聊天群
在和客户确定了 webIm 功能需求和架构选型和技术设计后,然后就是编码实现了,其间躺了很多坑,当然实现完系统后技术上也有一些提升,尤其是对于地层协议,技术理论等。
后话:本来还想在额外实现基于 h5 的语音,语音和视频连线功能的,在经过一番调研后,发现 h5 对于语音和视频这方的支持还不完善,兼容性不好,索性就先放一放。
**自我介绍:**
技术老鸟一枚,技术爱好者,10 年+技术从业经验,后端架构师,欢迎爱好技术的你来交流:weixin:xq20813341