连接服务器
等待与服务器建立连接。
[!TIP|labelVisibility:hidden|iconVisibility:hidden] navigator.mqtt.connect(args)
支持平台:
- Android
- iOS
参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
args | Object | 是 | 数据对象 |
args
参数为一个对象,其属性包含以下一项或多项:
url
(String/ 必选) -- 服务器地址,例如:“tcp://10.10.100.83”port
(String/ 必选) -- 端口号,例如:“1993”clientId
(String/ iOS必选/Android可选) --设置桥接的客户端IDusername
(String/ 可选) -- 用户名password
(String/ 可选) -- 密码isCleanSession
(Boolean/ 可选) -- 断线重连时,是否关闭会话重用机制,默认true
,关闭会话重用机制。每次Connect都是一个新Session,会话仅持续和网络连接同样长的时间;false
开启会话重用机制。网络断开重连后,恢复之前的Session信息。需要客户端和服务器有相关Session持久化机制。isBinaryPayload
(Boolean/ 可选) -- 是否是二进制数据,默认false
;设置此true
将使插件将所有数据视为二进制并在事件上发出ArrayBuffer而不是字符串willTopicConfig
(Object/可选) --遗言主题配置(一旦客户端出现异常中断,便会触发服务器发布Will Message消息到Will Topic主题上去,通知Will Topic订阅者,对方因异常退出),该对象其属性包含以下一项或多项:topic
(String/可选)--遗言主题qos
(NSNumber/可选)--服务质量,默认0;0:最多一次的传输;1:至少一次的传输,2: 只有一次的传输,3:待用,保留位置retain
(Boolean/可选)--发布保留标识,仅针对PUBLISH消息。默认true
;false仅仅为当前订阅者推送此消息;true表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。payload
(String/可选)--消息体,主题的消息内容
success
(Function/ 可选) --成功回调函数,没有返回error
(Function/ 可选) --失败回调函数,返回一个对象,其属性包含以下一两项:- errorCode(Int/ 可选) --错误码
- errorMessage(String/ 可选) --错误信息
- onConnectionLost(Function/ 可选) --连接断开监听回调函数,返回一个对象,其属性包含以下一两项:
- errorCode(Int/ 可选) --错误码
- errorMessage(String/ 可选) --错误信息
- onPublish(Function/ 可选) --消息监听回调函数,返回两个参数:
topic
(String/ 可选)--主题名称payload
(String/ 可选)--主题消息内容
routerConfig
(Object/可选) --路由器配置,该对象其属性包含以下一项或多项:router
(Object/ 可选)--路由器对象publishMethod
(String/ 可选)--获取发布消息的函数名useDefaultRouter
(Boolean/ 可选)--是否使用默认路由器,设置false以使用您自己的主题路由器实现。设置true以使用插件中实现的stock主题路由器。
示例代码
// 引用js
<script src='supconit://hcmobile.js'></script>
<script>
// 监听’deviceready‘事件
document.addEventListener('deviceready', onDeviceReady, false)
function onDeviceReady(){
navigator.mqtt.connect({
'url':"tcp://10.10.100.83",
'port':1993,
'clientId':'mqttjs_' + Math.random().toString(16).substr(2, 8),
'username':"uname",
'password':'pass',
success:function(s){
//连接成功
alert("connect success");
},
error:function(e){
//连接失败
alert(JSON.stringify(e));
},
onConnectionLost:function (){
//连接断开
alert(JSON.stringify(e));
},onPublish:function (topic,payload) {
//监听消息
alert("topic:"+JSON.stringify(topic)+"payload:"+JSON.stringify(payload));
}
});
}
</script>
响应连接失败示例代码:
{
"errorCode":8,
"errorMessage":"AMQJS0008I Socket closed."
}
响应消息监听示例代码:
topic:"aiot/notice/change"
payload:"{\n \"msg\": \"hello22\"\n}"
响应断开连接监听示例代码:
{
"errorCode":8,
"errorMessage":"AMQJS0008I Socket closed."
}