【发布时间】:2019-07-13 13:58:59
【问题描述】:
在this sample project 我正在尝试订阅频道并发布到其中。
但是我再也没有收到发送给代理的消息。
这是服务器:
const mqttServer = require("mqtt-server");
const servers = mqttServer(
{
mqtt: "tcp://localhost:1883",
mqttws: "ws://localhost:1884",
},
{
emitEvents: true, // default
},
client => {
console.log("client connected!");
// console.log(client)
client.connack({
returnCode: 0,
});
client.on("data", data => {
console.log("got data: ");
console.log(data);
client.puback({messageId:data.packetId, ...data})
});
client.on("error", err => {
console.log(err);
});
},
);
servers.listen(_ => {
console.log("listening!");
});
servers.close(_ => {
console.log("close!");
});
这是客户端:
const mqtt = require("mqtt");
const client = mqtt.connect("mqtt://localhost:1883");
client.on("connect", ack => {
console.log("connected!");
// console.log(ack);
client.subscribe("/test", err => {
console.log(err);
});
client.on("message", (topic, message) => {
console.log(topic);
// message is Buffer
console.log(message.toString());
});
setInterval(_ => {
client.publish("/test", "Hello mqtt");
}, 3000);
});
client.on("error", err => {
console.log(err);
});
对我缺少什么有什么想法吗?
【问题讨论】:
-
主题不应以“/”开头 - 这是添加额外的主题级别并且是不好的做法,请参阅hivemq.com/blog/…。您是否尝试过使用命令行发布者或订阅者来测试您的代理是否确实有效?
-
嗨 @barny 我更改了代理,现在可以正常工作了,感谢您的链接,它有帮助!
标签: javascript node.js mqtt