无法使用RabbitMQ mqtt客户端连接到我的node.js服务器(启用mqtt适配器)。两者之间是否存在兼容性问题?
我可以使用bluerhinos PHP库连接到队列,因此我知道队列名和主机名等都是正确的,并且消息正在被正确检索。
Node.js应用程序
var mqtt = require('mqtt');
var mqttClient = mqtt.connect('mqtt://rabbit:1883');
mqttClient.on('connect', function() {
console.log("connected");
});
mqttClient.publish('queue', 'message');PHP
require("vendor/bluerhinos/phpmqtt/phpMQTT.php");
$mqtt = new phpMQTT("rabbit", 1883, "clientId");
if ($mqtt->connect()) {
$mqtt->publish("queue","Hello World! at ".date("r"),1);
$mqtt->close();
}默认情况下,MQTT.js生成一个随机的客户端id,因此它与未设置的客户端id无关。
发布于 2015-06-16 19:49:42
如果连接到只支持MQTT 3.1 (不兼容3.1.1 )的代理,则应传递以下附加选项:
{
protocolId: 'MQIsdp',
protocolVersion: 3
}这是证实在RabbitMQ 3.2.4.在摩斯基托< 1.3。摩斯基托版本1.3和1.4在没有这些功能的情况下运行良好。
发布于 2015-05-04 11:27:46
NodeJS代码将是异步的,因此有可能在连接完成之前调用发布。尝试这样做,以确保它在尝试发布之前等待:
var mqtt = require('mqtt');
var mqttClient = mqtt.connect('mqtt://rabbit:1883');
mqttClient.on('connect', function() {
console.log("connected");
mqttClient.publish('queue', 'message');
});https://stackoverflow.com/questions/30028544
复制相似问题