1 Star 0 Fork 15

方斌斌1990 / Rmessage

forked from 护国神将-小将 / Rmessage 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

欢迎阅读Rmessage文档

技术栈

Rmessage是采用Reactor3,基于reactor-netty项目构建的实时消息推送api。

  • 什么是Reactor3?

    Reactor 是一个用于JVM的完全非阻塞的响应式编程框架,具备高效的需求管理(即对 “背压(backpressure)”的控制)能力。它与 Java 8 函数式 API 直接集成,比如 CompletableFuture, Stream, 以及 Duration。它提供了异步序列 API Flux(用于[N]个元素)和 Mono(用于 [0|1]个元素),并完全遵循和实现了“响应式扩展规范”(Reactive Extensions Specification)。

  • 使用Reactor好处?

    非常容易构建高吞吐量纯异步的代码,还有就是能够无缝整合spring5[webflux]项目。

项目简介

使用Rmessage你需要外部管理群组用户关系,以及离线消息存储,Rmessage不提供持久化,测试可以使用默认Handler内存保留离线消息。 整个项目采用纯异步的编程思想去开发,旨在学习reactive programming。

目前支持的功能

  1. 单聊
  2. 群聊
  3. 离线消息落地以及拉取
  4. 离线在线通知管理
  5. 心跳,连接鉴权机制
  6. 群组关系管理
  7. 支持多端在线
  8. 目前支持tcp协议,项目设计时考虑多协议扩展。
  9. 支持服务端自定义消息拦截
  10. 消息QOS机制(还未实现)

快速开始

  • 服务端
 ServerStart
     .builder()
     .tcp()
     .ip("127.0.0.1")
     .port(1888)
     .interceptor(frame -> frame,frame -> frame)
     .setAfterChannelInit(channel -> {//  channel设置
      })
     .connect()
     .cast(TcpServerSession.class)
     .subscribe(session->{
       session.addGroupHandler(groupId -> null).subscribe(); // 设置群组管理handler
       session.addOfflineHandler(new DefaultOffMessageHandler()).subscribe(); // 设置离线消息handler
       session.addUserHandler(new DefaultUserTransportHandler()).subscribe(); // 设置用户关系管handler
  });
  • 客户端
 ClientStart
   .builder()
   .tcp()
   .ip("127.0.0.1")
   .port(1888)
   .userId("21344")
   .onReadIdle(10000l,()->()->System.out.println("心跳了"))
   .setClientType(ClientType.Ios)
   .setAfterChannelInit(channel -> {
                    //  channel设置
    })
   .connect()
   .cast(TcpClientSession.class)
   .subscribe(session->{
       session.sendPoint("123","测试一下哦").subscribe(); // session 操作类
   });

协议设计

  • 单聊 多聊

FixHeader 【1 byte】

client_type message_type
high 4bit low 4bit

Topic 【n byte】

from length to length from to
1byte 1byte n byte n byte

Body 【n byte】

body length body
2 byte n byte
timstamp
8 byte
  • Online报文/Offline报文

FixHeader 【1 byte】

client_type message_type
high 4bit low 4bit

ConnectionState 【n byte】

user length user
1 byte n byte
  • Ping报文/Pong报文

FixHeader 【1 byte】

client_type message_type
high 4bit low 4bit

空文件

简介

Rmessage是采用Reactor3,基于reactor-netty项目构建的实时消息推送api。 展开 收起
Java
取消

发行版

暂无发行版

贡献者

全部

近期动态

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

搜索帮助