曾经有一个银行的客户项目中需要用到 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 年+技术从业经验,后端架构师,欢迎爱好技术的你来交流:qq:20813341
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.