React Native MQTT.js:我可以选择TPC / IP协议吗?

时间:2019-08-05 19:25:11

标签: react-native tcp mqtt

我在使用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以外的其他协议吗?如果是,我如何选择它们?

1 个答案:

答案 0 :(得分:0)

让我们简化一下,因为您只传递单个代理,所以可以传递完整的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://ali://)。

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