开源仓库:https://github.com/ACking-you/my_chat
注意:本项目使用go1.18进行开发,且使用到了go workspace进行内部依赖管理,以及go泛型简化业务,故需要的golang版本至少达到1.18
项目运行
go run main/main.go
项目愿景
- 实现实时聊天系统(对应使用websocket协议)
- 实现用户信息和类似于QQ空间的功能(对应http协议)
- 实现音视频通话(对应webrtc协议)
- 实现远程控制(对应webrtc协议)
目前进度
- 登录注册
- 一对一实时聊天
- 聊天群组
- 用户信息拉取
- 用户信息自定义(头像设置、个性签名)
- 好友申请相关
- 消息本地化存储(获取历史消息)
- 账号记录(本地存储)
- 消息云端存储(离线消息)
- 发送文本消息
- 发送二进制消息(文件、图片等等)
- 多设备账号登录(windows、Linux、macOS、安卓、IOS等等)
- 多设备跨端文件传输
- 好友动态的发送和获取(类似于朋友圈)
以上为暂定的功能模块,后续会加入视频通话和远程控制模块。
后端架构
项目目录说明
注意由于本项目采用go1.18版本,使用的是go work来管理多个项目依赖,下面的所有文件夹都是一个单独的go mod项目。
├───chat_http 使用http相关服务的业务(如不需实时主动转发的)
├───chat_socket 使用websocket相关服务的业务(如需要实时主动转发的)
├───conf 整个项目的配置文件(包含数据库连接等)
├───logger 整个项目的logger配置
└───main 项目的运行main函数文件
整体业务流程
模块划分
类图
以下是实时聊天系统的类图,目前只支持文字消息,也就是对应的TextMessage的转发,如果需要增加其他大型文件的转发,可以采取分块的方式。
前端效果展示
登录和注册
用户信息
添加好友
好友实时聊天以及历史聊天记录获取
今天的文章项目实战——高拓展的实时聊天系统分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/27724.html