1 Star 0 Fork 131

源部落 / universe_push

forked from comsince / universe_push 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

Build Status GitHub license Gitee stars GitHub stars

支持集群的分布式即时聊天系统

适合快速部署的聊天系统

这是一个聊天系统的简单架构,解决大量用户需要即时通讯的解决方案,基于RPC框架Dubbo,SpringBoot构建微服务应用,提供Docker快速部署的解决方案。 提供Android客户端类似微信功能,包括好友添加私聊群聊,等基本功能

架构图

NOTE: 基本架构图说明为了帮助大家更快了解系统依赖的组件,方便大家快速本地部署

image

Android 客户端

android-chat客户端,基于java nio实现TCP长连接,使用自定义的二进制协议,全新的心跳设计,实现与web端消息同步,音视频通话等功能。

image

扫码体验APK下载

image

NOTE: 本apk基于android-chat构建替换为java协议栈开发

  • 请选择其中任何一个帐号密码进行登录即可
帐号:13800000000, 13800000001, 13800000002
验证码:556677
  • 技术咨询

当你登录上面其中一个测试帐号后,如果你有什么问题,请到通讯录找到官方技术支持发消息即可,你也可以在IM即时通讯交流组提问,如果在研究过程中有问题,可以随时咨询,本人尽量提供技术支持,但并不保证随时在线,请尽量在工作日时间发消息

  • 官方QQ群交流

image

基于Vue的Web客户端

web客户端基于websocket通信,在此协议之上使用json格式的协议进行通讯,详情参见vue-chat,支持文本,图片类型发送,支持实时音视频,支持音视频与android-chat客户端互通

  • 项目预览

image

  • 语音通话

image

  • 视频通话

image

NOTE: 演示地址 演示账号,验证码同手机版一致.由于这里使用的是http服务,chrome浏览器对非https的权限管控,建议使用edge浏览器测试音视频通话,当然你也可以本地部署

Vue-Chat公测地址

  • 公测地址chat.comsince.cn NOTE: 注意公测地址演示地址两套环境是独立的,数据不互通,公测环境请使用手机号+验证码登录,如需技术支持或意见反馈请加好友13900000001官方技术支持,公测地址带宽只有1M,首次加载可能需要时间比较长,请耐心等待

服务说明

聊天系统为了适应大规模用户的链接请求,将服务分为链接服务消息服务,它们都是独立的,可以单独部署也可以集群部署

链接服务[push-connector]

用于解决用户的链接请求,支撑百万级用户的链接,可单机部署,可集群部署。如果你存在大规模用户链接,可以启动集群模式,参考K8s自动伸缩模式

消息服务[push-group]

用于用户处理用户管理,会话管理,离线消息处理,群组管理等功能,是整个即时通讯系统的业务处理模块

自动化构建

增加持续集成的好处

  • 随时随地发布软件
  • 任何一次构建都能触发一次发布
  • 只需发布一次artifact,即可随时发布

NOTE: 以下是发布持续交付工作流图

image

如何启动服务

本机部署只需要两个SpringBoot服务,一个Mysql服务,一个zookeeper服务,链接服务push-connector集群模式还需要kafka支持

部署前准备

  • 安装dockerdocker-composer,如果需要在k8s中部署,请准备好相关的环境
  • 确保编译此项目mvn clean package -Dmaven.test.skip=true

生产模式

这种模式下,所有的镜像都会从Docker Hub下载,只需要复制docker-compose.yml,在该目录下执行docker-compose up即可. 如果要查看完整的部署步骤,请参考这里基于Docker的即时通讯系统的持续集成发布说明

开发模式

如果你希望自己编译镜像,你必须克隆此代码,并在本地编译此项目。然后执行docker-compose -f docker-compose.yml -f docker-compose-dev.yml up

K8S中部署

如果想在k8s中部署,我们也提供yml配置,执行以下命令即可,详情参考即时通讯服务在k8s容器的部署说明

kubectl apply -f https://www.comsince.cn/download/cloud-native/universe-kube-deployment.yml

或者下载代码执行,push-connector支持扩展,以适应海量长连接,集群模式需要kafka支持,如果kafka没有启动成功,可以手动重启push-connector

kubectl apply -f ./universe-kube-deployment.yml

image

本地开发测试

NOTE: 准备好mysql与zookeeper服务,配置好相应的配置,直接启动push-connectorpush-group两个spring-boot服务即可

虚拟机部署

NOTE: 如果你希望直接脚本部署,参考脚本部署,例如如下是push-connector服务

  • 启动spring-boot-dubbo-push-connector链接网关服务
/opt/boot/push-api
├── jvm.ini
├── push-connector //可执行启动脚本
└── log
   └── push-connector.log //存放日志
└── lib
   └── spring-boot-dubbo-push-connector-1.0.0-SNAPSHOT.jar //可运行的jar
  • 执行启动服务
# 启动服务
./push-connector start
# 停止服务
./push-connector stop

CentOS部署

NOTE: 如果你在部署中遇到问题,可以到上面演示环境找到官方技术支持寻求解答,也可以到QQ群需求帮助,如果你有在其他环境成功安装的经验,欢迎反馈给我们

Windows部署

欢迎为此项目作出贡献

该项目是开源项目,欢迎提出建议或者提供意见反馈,如果你喜欢此项目,请点击star支持我们不断改进

感谢

此项目时在参考其他项目基础上完成,在此表示感谢

MIT License Copyright (c) 2019 comsince Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

基于t-io的即时消息通讯系统,采用Dubbo,SpringBoot的分布式架构,可以衍生出推送,群组通讯的基础架构 ,支持docker,k8s快速部署。Android版本支持私聊,群聊,支持voip通话,支持语音,短视频,图片,位置发送。web客户端使用vue,基于websocket协议,基于json的自定义文本协议实现消息解析,支持与android客户端实现消息互通。实现一端发布,多端同步消息.支持android端与web端音视频通话 展开 收起
Java
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/gitybl/universe_push.git
git@gitee.com:gitybl/universe_push.git
gitybl
universe_push
universe_push
master

搜索帮助