项目实战——高拓展的实时聊天系统

Posted C+G

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目实战——高拓展的实时聊天系统相关的知识,希望对你有一定的参考价值。

文章目录


开源仓库: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的转发,如果需要增加其他大型文件的转发,可以采取分块的方式。

前端效果展示

登录和注册

用户信息

添加好友

好友实时聊天以及历史聊天记录获取

以上是关于项目实战——高拓展的实时聊天系统的主要内容,如果未能解决你的问题,请参考以下文章

Python项目实战教程:web实时聊天室项目

Java互联网实时聊天系统(附源码)

bilibili高并发实时弹幕系统的实战之路

#夏日挑战赛#FFH实时聊天室之WebSocket实战

Go项目实战:打造高并发日志采集系统(三)

全程手把手带你运用Java Shiro技术栈基于最流行RBAC拓展模型实战分组织机构管理系统