连接服务器

等待与服务器建立连接。

[!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可选) --设置桥接的客户端ID
  • username(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."
}

results matching ""

    No results matching ""