有人休息时间用uniapp做了套聊天App,代码全开源
不是界面,界面好做。难的是消息推送、音视频通话、文件传输这些底层的东西。每一块单独拿出来都是一个坑,全部搞定要花多少时间,没做过的人很难估算。
chat-uniapp 是一个开源的即时通讯客户端,作者利用休息时间花了两个月写出来的。前端用 uniapp,后端用 SpringBoot,代码全开放。
一套代码,同时支持 Android、iOS 和 H5。不用分开维护三套代码,对小团队或个人开发者来说省了很多事。
uniPush 是 uni-app 官方的推送服务,整合了各厂商的推送通道。WebSocket 负责实时通信,两者配合保证消息及时到达。
实时音视频通话用的是腾讯 TRTC,稳定性有保障,接入也相对简单。
图片、语音、视频、文件统一存阿里 OSS,不用自己搭文件服务器。
用了 MyBatis-Plus 做数据库操作,Shiro 做权限控制,Sharding-JDBC 做分库分表,整体是偏企业级的架构。
-
chat-uniapp:移动端客户端(本文介绍的这个)
-
chat-flutter:Flutter 版本的客户端
想了解 IM 应用怎么从零搭建,这个项目是个不错的参考。消息推送、音视频、文件上传这些模块都有完整实现,可以直接看代码。
如果你需要在自己的项目里加聊天功能,可以基于这套代码改。前后端都有,不用从头写。
想做一个社交类产品验证想法,用这套代码搭个原型,比从零开始快很多。
Gitee:https://gitee.com/lakaola/chat-uniapp
GitHub:https://github.com/lakaola/chat-uniapp
这个项目目前看还在维护,作者还有 Flutter 版本的客户端和完整的后端 API 仓库,说明是认真在做,不是写个 demo 就跑路。
但话说回来,IM 应用是一个需要长期迭代的东西。消息丢失、推送延迟、并发冲突、安全性——这些问题在 demo 阶段不明显,一旦上线面对真实用户,一个比一个头疼。
一是仔细审后端代码,尤其是安全相关的部分,Shiro 的配置和接口鉴权逻辑要自己过一遍。二是音视频通话这块依赖 TRTC,有免费额度但商用要付费,成本要想清楚。三是数据库这块用了 Sharding-JDBC 分库分表,说明作者考虑过高并发场景,但具体的分片策略要根据自己的业务来调。
开源不等于免费午餐,但它能帮你省掉从零到一的那段最难的时间。剩下的路,还是得自己走。