项目链接:
github.com/SuanCaiYv/p…
概述
运用纯Rust完结的即时通讯体系。
- 服务端:Rust
- 后端:Rust
- 客户端:Rust+TS
关于客户端,原本钦定了Electron+Vue3,后面看到Tauri(一个运用Rust完结的类似Electron的跨平台框架);考虑到和服务端契合度以及代码可复用(偷懒了属所以),所以切换到了这儿。
依靠
- Database:PostGreSQL
- NoSQL:Redis
- Web: Salvo
- RPC: Tonic
- HttpClient: Reqwest
- Core: QUIC
- Runtime: Tokio+Monoio
效果
登录注册
主页面
增加好友
消息
好友列表
快速开端
环境依靠
此项目仅能够在Linux和MacOS运转,原因在于依靠的部分package无法在Windows运用,假如您想要在Windows尝试,能够运用Docker一键部署。
- Rust环境
- Yarn
- Postgresql
- Redis
- Kafka
裸运转
- 履行server/redis-cluster/cmd.sh即可,假如出现报错可重试,一般即可启动一个三节点的Cluster形式的Redis集群。
- 履行server/kafka-cluster/cmd.sh即可,假如出现
no such file or directory
,手动复制粘贴指令即可,一起第一次运转请注释掉初始化目录的指令用以初始化log文件夹。 - 进入你的PostgreSql,创立一个新的用户,制定密码,给予其创立删去database的权限,然后运用此用户登录,履行server/apt/init.sql即可。上述操作可经过PgAdmin图形界面完结,或经过DataGrip完结。
- 履行server/cert/tls.sh,生成开发证书,这儿你需求输入参数
localhost
指出证书的域名且表明这仅用在本地开发。
至此,你已拥有了基本的运转环境。
装备文件
更改:
- api
- message
- scheduler
- seqnum
之下的config-example.toml
名称为config.toml
并更改里面对应的装备即可,一般为数据库,Redis,Kafka,证书文件地址。
你可能会注意到这儿还有msgprocessor
项目,并且它没有装备文件,此项目还在开发中,它会作为消息处理下游服务,履行耐久化,推送体系接入等操作,但不影响现在本地启动。
客户端装备
类似服务端装备,处理证书文件方位即可,这儿需求注意的是,假如选用打包运转,需求反注释掉main.rs
中载入资源文件的代码。
额定的注意事项
seqnum
和msglogger
运用了monoio
作为运转时,因此需求运用nightly版本,随着后续GAT的安稳,此要求将被撤销。
Docker运转
根据体系架构,挑选aarch64
/amd64
履行docker-compose-aarch64/amd64.yaml
即可。
compose会主动拉起一个kafka,一个redis集群,一个postgresql以及对应的四个模块(msglogger嵌套在message中运转)。
体系架构
细节完结
客户端完结
待办
由于时刻和精力要素,部分功用还在开发中,且对应API已开发结束,等候客户端整合,这些功用包括但不限于:
- 发送文件,表情,图片,视频,音频
- 消息数据库耐久化(为了快速开发现在仅存储在敞开了耐久化的Redis中)
- HTTP3敞开
- 客户端消息乱序,丢失监测机制
联络方法
假如你对此项目感兴趣,或许想要了解详细的完结(由于时刻和精力,文档会有所短缺)。能够经过以下方法联络我:
- Mail:jokerblack2508826394@gmail.com
- QQ:2508826394
本项目遵循MIT开源许可。