如何解决Node.js-Mosca和Heroku
我在使用Mosca和MQTT的node.js上构建了服务器。
在我的本地主机上,一切正常,包括通过mosquitto(_sub / _pub)获取/发送消息。
当我将代码上传到Heroku时,mqtt请求在服务器内部起作用,但是在mosquitto上什么也没看到。
这是我运行MQTT代理的代码。
import { ServerOptions,Server,Client } from "mosca";
const settings: ServerOptions = {
port: 1883,};
const ms = new Server(settings);
为了通过node.js发布消息,我使用了以下代码行:
import * as mqtt from "mqtt";
const mqttServer = mqtt.connect("mqtt://localhost:1883");
mqttServer.publish(`testTopic`,`testMsg`);
我使用了heroku的http网址(http://<app>.herokuapp.com
)。
我试图像这样通过mosquitto_sub获取testMsg
:
> mosquitto_sub -h <app>.herokuapp.com -t testTopic
没有运气。
如果我使用本地主机版本并输入mosquitto_sub -t testTopic
,则可以使用。
为什么不在Heroku中?
(顺便说一句,我使用打字稿。)
解决方法
Heroku将仅通过HTTP(在HTTPS的端口80或443上)公开Web应用程序。它不会将端口1883上的传入数据转发到应用程序实例。
如果您将mosquitto_sub留足够长的时间,我希望它会显示有关无法连接的错误。
如果要在Heroku上托管MQTT代理,则需要在Websockets上使用MQTT,最有可能在端口443上使用HTTPS
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。