IoT控制台中的活动或任何请求订阅中的任何消息。
mosquitto_pub返回一个奇怪的错误:
[root@centos7 google-iot-mqtt]# node cloudiot_mqtt_example_nodejs.js \
> --project_id=curious-furnace-181313 \
> --registry_id=my-registry \
> --device_id=mimic1 \
> --private_key_file=./rsa_private.pem \
> --algorithm=RS256
Google Cloud IoT Core MQTT example.
connect { '0': {},
'1':
{ [Function: require]
resolve: [Function: resolve],
main:
Module {
id: '.',
exports: {},
parent: null,
filename: '/home/tmp/uwe/google-iot-mqtt/cloudiot_mqtt_example_nodejs.js',
loaded: true,
children: [Object],
paths: [Object] },
#1 楼
当您发送给Google MQTT API的请求上的协议不匹配时,会发生此错误。您使用通过SSL进行MQTT的8883端口。在我看来,您呼叫的地址是普通的http地址(不带https或http,默认值为http),它将使用1883(普通MQTT的端口)。
如果您打算使用8883和SSL,使用https拨打地址。如果您根本不是要通过SSL进行MQTT,则将端口固定为1883。
评论
这无济于事。他们需要端口8883,这是他们的NODEJS示例使用的端口。
–Gambit支持
17年9月29日在13:17
好吧,这是协议不匹配的最明显原因,但是mqtt消息内部也会发生错误,例如,与指定内容相比,消息太长。很难说是什么导致了您的问题。
–mico
17年9月29日在15:38
正确的答案是看wireshark。我发现即使将--tls-version添加到原始命令行中,mosquitto_pub也不会发送加密的消息,因为纯文本消息位于PCAP中。
–Gambit支持
17-10-2在14:18
#2 楼
我已通过在mosquitto_pub命令--cafile中添加ca证书来进行修复。/roots.pemGoogle ca根证书:https://cloud.google.com/iot/docs/how-tos/mqtt-bridge
评论
显然,他们的NODEJS应用程序生成的消息花了一些时间才能订阅。但是mosquitto_pub仍然不起作用。使用由其NODEJS应用程序创建的JWT密码向mosquitto_pub添加-P参数无济于事。