注册

【环信MQTT消息云集成指南】常见问题整理

业务开通

1. 注册后无法开通MQTT业务

问题描述:
在注册账户后,登录console控制台,选择【应用列表】中的某一个App,无法开通MQTT业务。 

问题原因:
(1)使用系统提供的默认demo开通,目前该demo暂不支持开通MQTT业务; 
(2)在console控制台【添加应用】时,数据中心默认为“国内2区”,需要更改为“国内1区”; 

07a3f88057de1e3a213626ff1a020837.jpg
解决方案:
新建应用时,数据中心选择“国内一区”。

客户端集成 

 1.哪些开发语言支持集成MQTT客户端

问题描述:
都有哪些开发语言支持集成MQTT客户端?
解决方案:
MQTT协议属于标准协议,目前已支持多种开发语言集成,包括:Java、iOS、Android、JavaScript、C、Node.js等等。同时集成MQTT客户端可支持两种方式:
(1)选择开源的MQTT SDK:社区提供多种开源的MQTT 客户端SDK,环信已将下载链接整理如下,可根据需要下载。
客户端SDK下载
(2)基于标准协议进行开发:基于标准的协议开发MQTT客户端,也可无差异对接MQTT服务器。

 2.小程序是否支持集成MQTT客户端 

问题描述:
小程序(微信小程序、支付宝小程序)是否支持集成MQTT客户端?
解决方案:
支持的,目前微信及支付宝小程序都支持集成MQTT客户端,可选择使用mqtt.min.js SDK。 
集成步骤如下: 
步骤1:选择mqtt.min.js开源的SDK,目前测试只有4.2.1之前的版本小程序端可以使用。 
步骤2:配置域名地址,在【微信/支付宝开发者平台】->【开发】->【开发管理】->【开发设置】->【服务域名配置】部分配置获取token的域名地址和服务器连接的域名地址。 
(1)服务器连接的域名地址:在console后台【MQTT】->【服务概览】->【服务配置】下的【连接地址】获取; 
(2)获取token域名地址:在console后台【即时通讯】->【服务概览】->【服务版本】下的【REST API访问地址】获取; 
步骤3:获取orgname和appname:appkey由orgname#appname组成,例如“1145210806152081#demo”,orgname为“1145210806152081”,appname为“demo”; 
步骤4:设置用户登录账户,在console后台【应用概览】->【用户认证】下创建账户信息。 
步骤5:获取上述参数,配置到环信小程序demo中的相应字段上,即可成功连接服务器实现消息通信。 下载微信小程序demo下载支付宝小程序demo

3.安卓端如何集成MQTT客户端

问题描述:
安卓端如何集成MQTT客户端?
解决方案:
环信已提供安卓端使用的MQTT demo,下载链接: 安卓端demo

4.iOS端如何集成MQTT客户端 

问题描述:
iOS端如何集成MQTT客户端?
解决方案:
环信已提供iOS端使用的MQTT demo,下载链接:iOS端demo

 5.Java端如何集成MQTT客户端 

问题描述:
Java端如何集成MQTT客户端?
解决方案:
环信已提供Java端使用的MQTT demo,下载链接:Java端demo

6.Web端如何集成MQTT客户端 

问题描述:
Web端如何集成MQTT客户端?
解决方案:
环信已提供Web端使用的MQTT demo,下载链接:Web端demo

 服务器端集成

1.服务器端如何集成MQTT服务

问题描述:
服务器端如何集成MQTT服务?
解决方案:
为实现客户服务器、环信MQTT消息云及客户终端之间进行消息交互,不仅提供了客户终端使用的SDK,同时提供了服务器端集成方法,包括REST API方式服务器端SDK。 
(1)REST API方法 

(2)服务器端SDK下载

客户端连接

1.开通后无法连接MQTT消息云

问题描述:
在创建APP后,通过console后台获取的参数,无法连接MQTT消息云。 
问题原因:
(1)认证鉴权信息填写错误:
a)如果使用MQTT桌面客户端连接,登录密码直接使用token内容。token在【应用概览】->【用户认证】页面,选择相应账户后的【查看token】按钮获取;
b)如果使用代码连接,需要通过【应用概览】->【用户认证】->【用户ID】列表中的username/password先获取token,在通过token进行认证连接; 
(2)clientID填写错误:
a)clientID由两部分组成,形式为“deviceID@AppID”,其中deviceID由用户自定义,AppID通过【服务概览】->【服务配置】中获取。 例:“0023B8@ipd7a0”;
b)部分MQTT客户端会在clientID后自动添加时间戳,需要在连接时,将Append timestamp to MQTT client id置false; 
解决方案:
MQTT消息云连接需要5个基本参数,包括连接地址(Host)、端口(Port)、clientID(MQTT client ID)、用户ID(Username)、token(Password)
以下图为例,连接5个参数为: 
连接地址:aitbj0.cn1.mqtt.chat 
端口:1883(mqtt) 
clientID:0023B8@aitbj0(自定义@AppID) 
Username:test 
token:相应用户ID后的【查看token】内容
2fb7ad5e9fcbfa838f9131035ed5ba29.jpg


dfbc0f9b053edd6ccb022d77a308c8e3.jpg

 2.MQTT客户端连接消息云时,登录密码是选择用户密码还是token? 

问题描述:
MQTT客户端连接消息云时,登录密码是选择用户密码还是token值。 
问题原因:
取决于使用者是否可以对MQTT客户端连接过程进行修改。 
(1)如果可以修改,则需要先编写获取token流程,然后使用获取的token进行连接登录。当获取token时,会使用用户名、用户密码、org_name、app_name以及token域名等信息;
(2)如果不可以修改,则直接使用token进行连接登录; 
解决方案:
确定使用的MQTT客户端: 
(1)如果使用MQTT桌面客户端,比如MQTT Broker、MQTT BOX等,登录密码直接使用token内容。token在【应用概览】->【用户认证】页面,选择相应账户后的【查看token】按钮获取;
(2)如果使用代码连接,需要通过【应用概览】->【用户认证】->【用户ID】列表中的用户名和用户密码请求token,在通过获取到的token进行认证连接; 

3.MQTT客户端反复出现断开重连现象 

问题描述:
MQTT客户端反复出现断开重连现象。 
问题原因:
(1)在配置参数时,设置了断开重连模式; 
(2)存在两个或两个以上的客户端使用相同的clientid登录,他们会互相踢对方,如果设置成自动重连机制,将会无限循环断开重连; 
解决方案:
确保当前APP下每个clientID的唯一性。

 4.用户名存在100个限制怎么办?

问题描述:
在【应用概览】->【用户认证】下创建用户会有100个 数量的限制,如果登录clientID超过100个怎么办? 
问题原因:
(1)MQTT消息云以clientID作为唯一标识,不同的clientID可以使用相同的用户信息进行登录,因此100个用户信息可以复用;
(2)如果客户需要集成IM、Push等其他的业务,可以联系商务进行版本升级,提高创建用户数量; 
解决方案:
复用用户账户,不同的clientID可以使用相同的用户信息进行登录。

 5.登录报错信息Server has closed connection without connack. 

问题描述:
在MQTT客户端连接时,服务器返回‘Server has closed connection without connack.’ 
问题原因:
(1)MQTT客户端没有启用遗嘱消息(will:false),但是遗嘱消息的Qos等级设置为“1”,标准规定will为false时,willqos必须是0; 
解决方案:
将遗嘱消息的QoS等级设置为'0'。

异常排查

1.如何查看消息是否发送成功 

问题描述:
发布客户端发送消息后,订阅客户端一直收不到消息,如何确认消息是否发送成功?
问题原因:
消息接收不到,有以下可能原因: 
(1)发布客户端没有将消息发布出去; 
(2)订阅客户端没有接收到消息; 
解决方案:
(1)通过调用REST API中查询客户端消息发送&投递记录接口查询; 
(2)通过调用服务器端SDK中QueryMqttRecordMessageOfClient函数查询; 
(3)使用环信console后台中的【记录查询】→【消息记录查询】功能,输入发布/订阅客户端的clientID及相应时间段,即可查看上下行消息记录,定位问题出在发布客户端还是订阅客户端。 
605757e666177bdbb1e892039f93d051.jpg


 2.如何查看客户端的订阅关系

问题描述:
如何查看客户端的订阅关系?
解决方案:
(1)通过调用REST API中查询客户端session信息接口查询; 
(2)通过调用服务器端SDK中QuerySessionByClientId函数查询; 
(3)使用环信console后台中的【记录查询】→【设备状态查询】功能,输入待查询客户端的clientID,即可查看在线状态、登录用户ID以及订阅关系。 
5d8b674df3bf03935f1c624688a148de.jpg


3.如何查看客户端的连接记录 

问题描述:
如何查看客户端的连接记录?
解决方案:
(1)通过调用REST API中查询客户端连接记录接口查询; 
(2)通过调用服务器端SDK中QueryMqttRecordDevice函数查询; 
(3)使用环信console后台中的【记录查询】→【设备记录查询】功能,输入待查询客户端的clientID及相应时间段,即可查看客户端连接、订阅以及断开连接等记录。 
5509f5cecf17b24682eca9a0b38c2269.jpg

 

4.如何查看客户端是否在线 

问题描述:
如何查看客户端是否在线?
解决方案:
(1)通过调用REST API中查询客户端session信息接口查询; 
(2)通过调用服务器端SDK中QuerySessionByClientId函数查询; 
(3)使用环信console后台中的【记录查询】→【设备状态查询】功能,输入待查询客户端的clientID,即可查看在线状态、登录用户ID以及订阅关系。 
2fb5c5270cec6128df13593f454ec305.jpg

0 个评论

要回复文章请先登录注册