欢迎阅读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机制(还未实现)

快速开始

  • 服务端

    Rmessage不管理用户群组之间关系,通过接口暴漏外部,只要实现接口注入即可。
ServerStart.builder().tcp().ip("127.0.0.1").port(1888).onReadIdle(10000l) //设置读心跳时间.onWriteIdle(10000l) //设置写心跳时间.option(ChannelOption.SO_RCVBUF,1023).interceptor(frame -> frame,frame -> frame)// 拦截所有message.setAfterChannelInit(channel -> {//  channel设置}).connect().cast(TcpServerSession.class).subscribe(session->{session.addGroupHandler(groupId -> null).subscribe();session.addOfflineHandler(new DefaultOffMessageHandler()).subscribe();session.addUserHandler(new DefaultUserTransportHandler());});

具体接口方法定义请参照接口注释

  1. UserHandler接口是处理用户登陆校验等
  2. OfflineHandler 是处理离线消息存储,以及拉取离线消息的接口
  3. GroupHandler 是获取群组下所有用户的接口
  • 客户端
 ClientStart.builder().tcp().ip("127.0.0.1").port(1888).userId("21344")  //设置用户名.password("12312") //设置密码.onReadIdle(10000l,()->()->System.out.println("心跳了"))//设置读心跳,以及设置回调runner.setClientType(ClientType.Ios)//设置客户端类型.setAfterChannelInit(channel -> {//  channel设置}).connect().cast(TcpClientSession.class).subscribe(session->{session.sendPoint("123","测试一下哦").subscribe(); //发送单聊消息session.sendGroup("group1","123").subscribe();  // 发送群聊消息session.accept(message -> {}); // 接受所有消息});

Github地址  https://github.com/1ssqq1lxr/Rmessage

转载于:https://www.cnblogs.com/1ssqq1lxr/p/10301474.html

基于spring reactor3构建的即时通讯api。相关推荐

  1. 基于WebSocket的网页端即时通讯

    基于WebSocket的网页端即时通讯 最近项目中需要用到一些即时通讯的相关技术,查阅了一些资料后发现有些示例不是让人很满意,所以博主写了一个demo,就怕以后会忘掉,也方便博友查看. 由于博主用的是 ...

  2. 基于SpringBoot框架实现的即时通讯App

    一.前言 1-1为啥写这篇Blog 期末做期末考核作业,想着基于SpringBoot整合Spring WebSocket做一个即时通讯的APP,为了学习,尽可能的融入多种框架,特别是客户端,使用了ok ...

  3. spring react_使用Spring WebFlux构建React性REST API –第1部分

    spring react 在本文中,我们将看到如何使用Spring WebFlux构建响应式REST API. 在进入React式API之前,让我们看看系统是如何发展的,传统REST实现遇到的问题以及 ...

  4. spring react_使用Spring WebFlux构建React性REST API –第3部分

    spring react 在上一篇文章的续篇中,我们将看到一个应用程序以公开React性REST API. 在此应用程序中,我们使用了 带有WebFlux的Spring Boot 具有响应式支持的Ca ...

  5. Spring boot + netty开发即时通讯 IM

    Spring boot + netty开发即时通讯 IM 目的 github地址 项目目录结构 主要核心类介绍 目的 学习以及开源思想,写一个可使用的IM通信程序 github地址 链接: https ...

  6. Android基于环信开发的即时通讯APP

    Android基于环信开发的即时通讯APP,源代码在Github上,GitHub地址为:https://github.com/PowerDos/BLChat ,希望能够帮到你们,下面是系统简介. 简介 ...

  7. 基于springboot+h5+websocket的即时通讯客服系统和百度实时语音转译(语音在线识别)

    本文章由本人原创 下载链接:https://download.csdn.net/download/u014191624/51948075 这是一个基于springboot+h5+websocket的即 ...

  8. java restful接口开发实例_实战:基于Spring Boot快速开发RESTful风格API接口

    写在前面的话 这篇文章计划是在过年期间完成的,示例代码都写好了,结果亲戚来我家做客,文章没来得及写.已经很久没有更新文章了,小伙伴们,有没有想我啊.言归正传,下面开始,今天的话题. 目标 写一套符合规 ...

  9. 基于Jabber协议的移动即时通讯系统研究与实现

    摘  要  本文利用支持Jabber协议的开源服务器WildFire,在基于J2ME平台的手机上实现了一个移动即时通讯系统,该系统不但具有传统即时通讯的文本信息传递功能,还具备拍照.传递照片.群组聊天 ...

  10. 基于 Go 语言构建企业级的 RESTful API 服务

    现代软件架构已经逐渐从单体架构转向微服务架构,在微服务架构中服务间通信采用轻量级通信机制.对于轻量级通信的协议而言,通常基于 HTTP 和 RPC ,能让服务间的通信变的标准化并且无状态化.此外开发模 ...

最新文章

  1. ABAP 一个隐藏 selection-screen block的实例
  2. android 渠道包 占位符配置,Android打包
  3. 程序运行实例数量的控制
  4. 【英语学习】【Level 07】U07 Stories of my Life L1 Going to the Countryside
  5. java序列化_今天聊聊 Java 序列化
  6. 可控硅型号怎样识别_可控硅是什么_可控硅型号_可控硅分类及判别_可控硅种类...
  7. 版权 Copyright 和 Phpstorm
  8. 新手如何快速学习单片机
  9. 简述RPL, DPL, CPL的区别与联系
  10. java实现kotlin接口_Kotlin 接口与 Java8 新特性接口详解
  11. 奥鹏教育计算机应用基础试题及答案,奥鹏计算机应用基础试题及答案.pdf
  12. 模拟电路与数字电路基础知识及实训QY-DG760A
  13. 北京少儿python培训视频教程
  14. 北京东方时尚学车日志
  15. python判断火车票座位_利用Python实现命令行版的火车票查看器
  16. CSAPP datalab
  17. 中企海外周报 | 华为在西班牙启动Wi-Fi 6高校创新应用测试试点;爱奇艺人脸识别技术获全球学术会议认可...
  18. raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+‘; not sup
  19. GE CimplicityV11.1安装步骤
  20. (2019,PersEmoN)用于分析表象性格、情绪及其关系的深度网络

热门文章

  1. AndroidStudio插件GsonFormat快速实现JavaBean
  2. 线程与进程在内核中的实现
  3. 贪心 Codeforces Round #303 (Div. 2) B. Equidistant String
  4. vmware player tools安装
  5. 【原创】查找原始MySQL死锁ID
  6. java 通过System.getProperties()获取系统参数
  7. 基于LVDS的高速自同步串行传输系统的研究
  8. iOS NSUserDefaults 存放位置
  9. 解决canvas合成图片大小错误、模糊以及跨域的问题
  10. 电商购物网站 - 需求与设计