如何实现IM即时通信系统(一)
在企业数字化建设过程中,如何与客户保持线上链接是重要的组成部分。而IM通信系统就属于数字化建设的基础设施。那么,如何实现一个符合企业需求的IM系统呢?采购当然是其中需要考虑的方式之一。但就我个人的经验来看,市面上好的IM厂商很稀少,因为IM厂商需要做标准化产品,所以如果公司的业务并不是传统意义上的社交IM业务。那么IM厂商提供的功能大部分用不到,并且对于群聊,单聊等基础功能还要做二次开发。
今天,我们并不讨论在什么情况下需要采购,什么情况下需要自研,等后面写产品思考类的文章时可以分享这些。现在我们只讨论一个话题,如何设计开发一个属于自己的IM系统?
首先,熟悉业务场景是架构设计的一部分,因为它决定了IM系统的功能范围。我们可以为这个IM定义某个业务场景:
客服网聊场景:
1,如果该用户有专属客服,则和专属客服进行会话 如果专属客服不在线,进入等待队列,等坐席应答;如果该用户为VIP,则可以进入优先级较高的等待队列。否则正常排队;
2,客服可以在线邀请投顾或者其他专家,进入服务客户的三方会话
3,自定义消息卡片:
支持注册绑卡/产品预约;
支持当前业务进度通知:“用户正在填写身份证”,“用户绑卡失败” ,
支持消息优先级,比如“用户支付失败”
支持进入场景提前通知:比如用户从某会议进入,用户从app端会议/直播/交易页面进入
4,超大群聊:可以支持3000人的聊天群(需要设计“读扩散”和“写扩散”问题的解决机制)
结合以上的场景,我们接下来可以定义我们的功能设计:
各业务根据分配到的appid接入IM服务 (前端SDK植入)
支持PC/H5/小程序通过websocket连接,APP通过socket连接
支持单聊/群聊/超大群(3000人)/聊天室
支持文本/图文/音视频/自定义消息
支持离线/历史消息存储
支持单聊转群聊场景
支持可集群部署,gRPC远程调用
应用架构设计:
首先,IM包括最基本的三个功能模块,分别是IM Server负责连接管理,IM Route负责路由管理,以及IM stroage负责消息存储管理。
从前面的场景中,我们也能发现在IM通信过程中,需要考虑两个最重要的ID的设计:用户id,群id。可以说这两个id在消息的分库分表,负载均衡,服务扩容,服务宕机等场景中都会起到很重要的作用。其中,我们考虑两个方面:
A,平衡性:每台服务器均匀处理请求
B,单调性:扩容或者宕机时,部分数据迁移即可
如何实现IM即时通信系统(一)相关推荐
- 计算机网络即时通信系统设计_天天玩微信,Spring Boot 开发私有即时通信系统了解一下...
概述 利用Spring Boot作为基础框架,Spring Security作为安全框架,WebSocket作为通信框架,实现点对点聊天和群聊天. 所需依赖 Spring Boot 版本 1.5.3, ...
- 【Golang 快速入门】项目实战:即时通信系统
Golang 快速入门 即时通信系统 - 服务端 版本一:构建基础 Server 版本二:用户上线功能 版本三:用户消息广播机制 版本四:用户业务层封装 版本五:在线用户查询 版本六:修改用户名 版本 ...
- spring boot websocket 客户端_Spring Boot 开发集成 WebSocket,实现私有即时通信系统
###1/ 概述 利用Spring Boot作为基础框架,Spring Security作为安全框架,WebSocket作为通信框架,实现点对点聊天和群聊天. ###2/ 所需依赖 Spring Bo ...
- 基于TCP Socket和Websocket实现的相互即时通信系统
目录 摘 要 III ABSTRACT IV 第一章 引言 1 1.1 即时通信系统基本概念 1 1.2 即时通信系统的发展历程 1 1.3 系统研究目的和意义 1 1.4 系统可行性分析 2 第二章 ...
- 2019吉大软件C++课设——模拟即时通信系统
吉林大学大三学生 东北师范大学附属中学OJ jinxi20111 2019.08.28 首先第一点,如果你是来学习和提问的,直走请进,如果你还没有仔细阅读完并感受到难度,我的建议是多阅读两遍,或者先动 ...
- 儒猿秒杀季!互联网大厂的IM即时通信系统项目实战
疯狂秒杀季:499元秒杀 原价 1899元 的 <互联网大厂的IM即时通信系统项目实战> 今天 上午10点,仅 40 套,先到先得! === 课程背景 === 随着企业不断发展,业务扩大, ...
- 基于XMPP的即时通信系统的建立(二)— XMPP详解
XMPP详解 XMPP(eXtensible Messaging and Presence Protocol,可扩展消息处理和现场协议)是一种在两个地点间传递小型结构化数据的协议.在此基础上,XMPP ...
- Gprs通信协议服务器,基于GPRS的即时通信系统协议设计与开发
摘要: 在全球所有的第二代移动通信中,GSM通信网络的使用人数最多,中国目前的大部分移动通信网络都是GSM系统.GSM网络主要用于语音通信,GSM与Internet相结合,出现了GPRS网络,使无线终 ...
- (三)打造华丽的即时通信系统主界面,让你的聊天体验更有质感
文章目录 一.引言 1.即时通信系统的基本概念和应用场景 2.Qt框架在实现即时通信系统中的应用 二.主界面设计 2.1 界面设计的基本要求 2.2 主界面的设计 三.通信功能实现 3.1 通信协议的 ...
- 基于CS结构的即时通信系统的设计与实现(QT开发)
4 基于C/S结构的即时通信系统开发的系统详细设计 4.1 系统设计目标 随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流 方式已经难以满足人们的交流要求,在互联网或局域网上即时的和好 ...
最新文章
- 自动驾驶中图像与点云融合的深度学习研究进展综述
- 使用BootStrap制作用户登录UI
- Hadoop2异常分析(二):Sqoop导出数据错误
- 6.22软件工程总结
- 这是一则计算机视觉顶级会议CVPR与腾讯的爆闻,啥?
- 用eslint + prettier + pre-commit管理项目(React)
- CCF 送货(满分代码)2015-12-4
- 面试技巧,如何通过索引说数据库优化能力
- POJ 2431 Expedition (贪心+优先队列)
- 翻译:图解HTTPS工作原理、秘钥、握手、HTTPS,SSL,TLS的区别、证书
- 器件基础知识——电容
- 吃货在东京 -- 记那段吃不饱的日子 之二 丰州的雪花牛肉
- dnf丢失clientbase_登录dnf时出现dnfbase.dll的丢失
- 大一计算机科学化学,核心导读: 王 龙(北京大学计算机科学技术系学生,江西省高考理科状元): 化学被称为理科中的文科。题目量较多,单题分较...
- 秀才seo博客:搜索引擎优化的前身和未来
- unity制作小地图
- 养兔子c语言sdut,SDUT 养兔子
- python如何爬取网站所有目录_python 爬取网站的博客目录
- C#拆分Excel工作表
- EasyExcel 实现单元格数据下拉选
热门文章
- 诺基亚8110能玩java吗_诺基亚81104G版评测 买不了吃亏也买不了上当
- Python的制表符和运算符
- office使用问题和解决方法总结
- HTTP服务器远程控制,求关注:远程控制你的打印机,附详细步骤
- Palette的使用
- matlab psk 信号,急求···psk信号载频估计的matlab算法
- 《Python 黑帽子》学习笔记 - 命令行选项和参数处理 - Day 4
- java--日期时间处理
- 2.2 在Matlab中进行相机标定
- at91sam9g25处理器uboot移植 个人笔记一