首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带MQTT.js的节点RabbitMQ问题

带MQTT.js的节点RabbitMQ问题
EN

Stack Overflow用户
提问于 2015-05-04 11:05:13
回答 2查看 1.5K关注 0票数 1

无法使用RabbitMQ mqtt客户端连接到我的node.js服务器(启用mqtt适配器)。两者之间是否存在兼容性问题?

我可以使用bluerhinos PHP库连接到队列,因此我知道队列名和主机名等都是正确的,并且消息正在被正确检索。

Node.js应用程序

代码语言:javascript
复制
var mqtt = require('mqtt');

var mqttClient = mqtt.connect('mqtt://rabbit:1883');

mqttClient.on('connect', function() {
   console.log("connected");
});

mqttClient.publish('queue', 'message');

PHP

代码语言:javascript
复制
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无关。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-16 19:49:42

如果连接到只支持MQTT 3.1 (不兼容3.1.1 )的代理,则应传递以下附加选项:

代码语言:javascript
复制
{
    protocolId: 'MQIsdp',
    protocolVersion: 3
}

这是证实在RabbitMQ 3.2.4.在摩斯基托< 1.3。摩斯基托版本1.3和1.4在没有这些功能的情况下运行良好。

票数 1
EN

Stack Overflow用户

发布于 2015-05-04 11:27:46

NodeJS代码将是异步的,因此有可能在连接完成之前调用发布。尝试这样做,以确保它在尝试发布之前等待:

代码语言:javascript
复制
var mqtt = require('mqtt');

var mqttClient = mqtt.connect('mqtt://rabbit:1883');

mqttClient.on('connect', function() {
   console.log("connected");
   mqttClient.publish('queue', 'message');
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30028544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档