揭秘使用环信MQTT消息云实现在线通知功能
1.方案背景
随着数字化服务的发展,应用系统与终端用户之间需要构建稳定消息通道,且消息的灵活性与实效性决定了消息的价值,尤其对于下述场景,皆需要即时下发业务状态变更通知。
-
开发测试
Bug创建、认领、修复等记录通知 -
在线选座
在线选座、预定、取消等状态变更通知 -
会议室预定
会议室预定、释放等状态变更通知 -
工单处理
工单录入、认领、处理等流程通知 -
个人待办
未完成、进行中、已完成等办理状态通知
综上所述,当接入端在近百万、千万级的情况下,需要选择一种安全,稳定,可靠的在线推送方案。
2.产品设计
基于MQTT订阅/发布模型,可以快速实现一对多在线推送功能,并且推送内容可根据自己业务自定义。
本次项目选择实现任务看板中的消息推送,推送内容包括:任务创建、任务认领、任务释放、任务完成等消息,从而快速实现团队云协作。
2.1.技术优势
针对一对多在线推送场景,选择MQTT订阅/发布模型具备以下优势:
- 高并发,可以允许海量客户端同时在线;
- 低延时,通过中间件进行分发,减少消息复制成本;
- 高可用,服务器支持水平扩展,满足性能要求;
- 易集成,已具备多端开源SDK,可快速上线;
- 轻量级,MQTT客户端SDK简洁,连接消耗低(保活心跳报文2个字节);
3.技术实现
本次MQTT服务器选择环信MQTT消息云,他们家服务器除了消息路由外,还支持消息存储、在线状态查询、客户端消息轨迹查询等功能。
最关键的是还提供了长期的免费版,节省了自己搭建服务器的时间(目前市面上没有免费的MQTT服务器,薅羊毛,不薅白不薅~)
在环信注册成功后,即可登录环信MQTT消息云控制台,【创建应用】并开通MQTT服务,获取图中关键信息。
3.1.示例说明
连接环信MQTT服务并发送消息
function mqttConnect(){
var options = {
// timeout : 3,//timeout,
mqttVersion : 4,//mqttVersion,
cleanSession : true,//cleanSession,
useSSL : false,//useTLS,
userName : user,
password : token,
onSuccess: function(message){
console.log