首页 > 解决方案 > React Native MQTT.js:我可以选择 TPC/IP 协议吗?

问题描述

我在一个使用MQTT.js的 React Native 应用程序上工作。我想知道我是否可以更改协议?默认是 WebSockets,但我想要一个 TCP/IP 协议。

我试试这个:

let client = mqtt.connect({
  servers: [{ host: '192.168.1.22', port: '8883' }],
  protocol: 'tcp',
  username: 'admin',
  password: 'admin'
})

但是当我打印client它返回:

{ options:
    { servers: [...],
      protocol: 'ws',
      username: 'admin',
      password: 'admin',
      defaultProtocol: 'ws',
      [...]
    }
}

MQTT.js 是否支持 WebSockets 以外的其他协议?如果是,我如何选择它们?

标签: react-nativetcpmqtt

解决方案


让我们简化一下,因为您只传递一个代理,您可以传递完整的 URI 而不是数组。

let client = mqtt.connect('mqtt://192.168.1.22:1883', {username: 'admin', password: 'admin'});

如果你想使用数组语法,那么它应该是这样的:

let client = mqtt.connect({
  servers: [
    {host: '192.168.1.22', port: 1883, protocol: 'mqtt'}
  ],
  username: 'admin',
  password: 'admin'
});

但是我在 MQTT 源代码中指出的一点是它如何检查它将支持哪些协议。如果process.title等于,browser那么它将无法使用 Websockets 以外的任何东西(忽略wx://and ali://)。

因此,在您的应用程序的开头添加一个console.log(process.title)以查看该测试是否得到满足。


推荐阅读