Houge

反应式 IM Server
授权协议 Apache
开发语言 Java
所属分类 服务器软件、 电话/通讯/IM聊天
软件类型 开源软件
地区 国产
投 递 者 边永贞
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

一个 IM 服务端项目,采用 Spring Reactor 作为基础技术研发,全站响应式技术应用(Reactor/R2DBC/Netty)。

内置完整的 IM 通讯协议,使用 WebSocket + HTTP 方式实现整个 IM 系统相关业务。

能够完全独立于业务系统之外运行,且能够方便快速的与现有系统整合,并提供了 HTTP、gRPC 服务接口能方便的与 Houge 进行通讯,你可用于它快速搭建搭建私域 IM 服务,或用于替代公有云 IM 服务。

架构

特点

  • 响应式
  • 免费的
  • 高性能

技术栈

交互流程图

功能

  • ☑用户认证
  • ☑私人聊天
  • ☑群组聊天
  • ☑消息存储
  • ☑容器部署
  • ☑好友关系
  • ☑离线消息
  • ☑集群部署
  • ❌系统监控
  • ❌黑名单

文档

演示

私人聊天

群组聊天

 

HTTP 接口发送消息

gRPC 接口发送消息

感谢

Houge 的实现离不开源社区的支持,感恩为开源做出贡献的人。

 相关资料
  • 问题内容: 以下是React中的反模式吗?我喜欢这种模式,因为当实例化一个组件时,它在静态函数中为我提供了上下文。然后,我可以导入该类并调用静态方法来修改状态。还是可以通过更好的方式来完成? 问题答案: 显然,这取决于条件,可能是一种反模式,也可能是一个错误。静态类方法不应与类实例一起使用。绑定到特定的组件实例和用途,这只能证明类是单例是合理的(尽管单例也经常是反模式)。如果期望有多个类实例,那么

  • 我正在做我的项目,我注意到当严格模式打开时,它会将两个相同的元素推入我的数组。当严格模式关闭时,它只将一个元素推入数组。有什么解释为什么会这样吗? 这是我的状态。

  • 我尝试创建一些基于反应式堆栈(反应器WebFlux)的基本Spring 5应用程序。 我的下一个目标是实现能够: 保存书籍。 查找所有图书。 我的存储库需要涵盖以下场景: 方案 A: 没有人订阅FindAll 有人保存了一本书(id=1) Client1订阅FindAll 书籍(id=1)被推送到Client1(Client1保持订阅状态,流未完成!) 有人保存了一本书(id=2) 书籍(id=2

  • 我有一个关于Spring Reactive WebClient的问题...几天前,我决定在Spring Framework中玩新的反应式东西,我做了一个仅用于个人目的的抓取数据的小项目。(向一个网页发出多个请求并组合结果)。 我开始使用新的反应式WebClient发出请求,但我发现的问题是客户端没有对每个请求发出响应。听起来很奇怪。下面是我为获取数据所做的工作: 以及调用fetchData的函数:

  • 我开始更多地接受反应式编程,并试图将其应用于我的典型业务问题。我经常使用的一种模式是数据库驱动类。我有一些已定义的单元类,如ActionProfile,其实例由ActionProfileManager管理,它从数据库表中创建实例并将其存储在映射中 然而,如果我想让它更具反应性,那么创建地图会打破单子。我可以做的一种方法是将映射本身设置为可观察的,并返回一个monad来为客户端查找特定的键。然而,中

  • 反应式编程是一种编程范式,用于处理数据流和变化的传播。 这意味着当一个组件发出数据流时,更改将通过响应式编程库传播到其他组件。 变化的传播将持续到最终接收器。 事件驱动和反应式编程之间的区别在于事件驱动的编程围绕事件而反应式编程围绕数据。 ReactiveX或RX用于反应式编程 ReactiveX或Raective Extension是最着名的反应式编程实现。 ReactiveX的工作取决于以下两