当前位置: 首页 > news >正文

介绍一款即时通讯系统——盒子IM

文章目录

  • 一、盒子 IM 简介
  • 二、技术架构总览
  • 三、消息推送方案


详细文档: https://www.yuque.com/u1475064/mufu2a
官方论坛: https://bbs.boxim.online
gitee: https://gitee.com/bluexsx/box-im

一、盒子 IM 简介

盒子IM是一个类似微信的聊天工具。后端采用springboot+netty实现,web端使用vue,移动端使用uniapp,支持私聊、群聊、离线消息、发送图片、文件、语音、emoji表情、视频聊天等功能。

  1. 盒子IM是一个仿微信实现的网页版聊天软件,不依赖任何第三方收费组件。
  2. 支持私聊、群聊、离线消息、发送语音、图片、文件、已读未读、群@等功能
  3. 支持音视频通话(基于原生webrtc实现,需要ssl证书)
  4. uniapp端兼容app、h5、微信小程序,可与web端同时在线,并保持消息同步
  5. 后端采用springboot+netty实现,网页端使用vue,移动端使用uniapp
  6. 服务器支持集群化部署,具有良好的横向扩展能力

二、技术架构总览

模块功能
im-platform业务平台服务,负责处理来自用户的业务请求(http)
im-server消息推送服务,不依赖业务,负责将消息推送给用户(ws)
im-client消息推送sdk, 其他服务可集成此sdk与im-server通信
im-common公共包,后端服务均依赖此包
im-webweb页面
im-uniappuniapp页面,可打包成app、h5、微信小程序

架构亮点

  • 无状态设计:im-server不存储业务数据,仅负责消息流转,支持水平扩展。

  • 集群化部署:通过Redis实现节点间消息同步,支持万级并发。

三、消息推送方案

当消息的发送者和接收者连的不是同一个server时,消息是无法直接推送的,所以我们设计出了能够支持跨节点推送的方案:

  • 利用了redis的list数据实现消息推送,其中key为im:unread:${serverid},每个key的数据可以看做一个queue,每个im-server根据自身的id只消费属于自己的queue
  • redis记录了每个用户的websocket连接的是哪个im-server,当用户发送消息时,im-platform将根据所连接的im-server的id,决定将消息推向哪个queue
http://www.jsqmd.com/news/145881/

相关文章:

  • PaddlePaddle THUCNews数据集应用:大规模文本分类
  • Mac系统USB转串口驱动安装手把手指导
  • PaddlePaddle DuReader数据集应用:开放域问答构建
  • 从注册表修复Multisim主数据库链接的实战项目应用
  • ESP32教程:电源管理电路完整指南
  • 树莓派4b安装系统与固件安全启动(Secure Boot)配置说明
  • 游泳池涂料怎么选?分析水池蓝单遍涂布覆盖率提高22%
  • 利用Arduino IDE搭建ESP32物联网通信环境入门必看
  • 数据分箱与Bootstrap置信区间分析
  • 红外反射式传感器电路搭建实战案例
  • Django REST框架中的表单验证和错误处理
  • PaddlePaddle SlowFast模型:双路径视频理解架构
  • PaddlePaddle ShuffleNet实战:低功耗设备上的高效模型
  • 水上乐园地面涂装材料技术革新,海瑞的水池蓝聚焦耐水泡性能
  • Vuetify中的图像缩放技巧
  • ESP32开发环境搭建:智能插座项目的实践配置
  • vLLM-Ascend 实战指南:从环境部署到性能调优的完整避坑手册
  • 使用CMake进行交叉编译的项目配置手把手教程
  • PaddlePaddle Chinese-BERT-wwm:全词掩码中文模型
  • Windows系统文件compobj.dll丢失损坏 下载方法
  • PaddlePaddle图像分类ResNet实战:ImageNet迁移学习
  • PaddlePaddle MoCo对比学习:无监督特征表示训练
  • Windows系统Arduino IDE下载完整指南:从零开始安装
  • Windows系统文件XAPOFX1_5.dll丢失损坏 下载方法
  • PaddlePaddle CrowdHuman数据集:密集行人检测训练
  • ITIL4知识管理实战:从“信息孤岛“到“智慧运维“的蜕变之路
  • 基于SpringBoot+Vue的乐乐农产品销售系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • Windows系统缺失COMDLG32.OCX 无法启动应用 下载修复
  • 一文说清ESP32引脚图与外设对应关系
  • Mac系统ESP32 Arduino环境搭建驱动配置详解