项目链接:

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

效果

登录注册

我用Rust做了一个QQ

主页面

我用Rust做了一个QQ

我用Rust做了一个QQ

我用Rust做了一个QQ

增加好友

我用Rust做了一个QQ

消息

我用Rust做了一个QQ

好友列表

我用Rust做了一个QQ

快速开端

环境依靠

此项目仅能够在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中载入资源文件的代码。

额定的注意事项

seqnummsglogger运用了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开源许可。