我在CentOS7上构建了mosquitto,并基于mqtt.js构建了node.js客户端。 ,使用
安装yum install mosquitto mosquitto-clients
本地测试
> mosquitto_sub -h localhost -t test
> mosquitto_pub -h localhost -t test -m "hello world"
工作正常,但是当我运行时:
var mqtt = require('mqtt')
var client = mqtt.connect('mqtt://192.168.1.70')
client.on('connect', function () {
client.subscribe('presence')
client.publish('presence', 'Hello mqtt')
})
client.on('message', function (topic, message) {
// message is Buffer
console.log(message.toString())
client.end()
})
我收到错误:连接被拒绝:未授权
mosquitto.conf 类似于:
pid_file /var/run/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
allow_anonymous true
我使用systemctl restart mosquitto重新启动它几次,这没有帮助。防火墙已关闭并且日志文件保持为空。 状态截图:
有人可以帮忙吗?
更新:
事实证明,mosquitto 服务因某种原因而损坏,状态显示为Active: active (exited)
。
我使用 mosquitto -p 1884 -v cmd 在端口 1884 上运行另一个 mosquitto 进程,它工作正常。然后我尝试使用重新加载conf
>/etc/init.d/mosquitto 重新加载
。它给了我
重新加载 mosquitto 配置(通过 systemctl):mosquitto.service 的作业无效。 [失败]
所以蚊子服务有问题。 不是最终的解决方案,但我设法通过删除重新启动安装过程来解决此问题,状态变为绿色,如下所示:
解决方案
我设法找出它不起作用的原因。我在我的服务器上安装了rabbitmq,它使用它的“rabbitmq_mqtt”,它消耗端口1883。重新分配端口将解决这个问题。
最佳答案
我设法找出原因。我在我的服务器上安装了rabbitmq,它使用它的“rabbitmq_mqtt”,它消耗端口1883。重新分配端口将解决这个问题。问题很简单,但是,是的,CLI 应该给我更多信息。
关于javascript - mosquitto+mqtt.js 得到 "Connection refused: Not authorized",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45747442/