繁体   English   中英

如何通过mqtt.js连接到ec2上的mqtt代理?

[英]how to connect to an mqtt broker on ec2 via mqtt.js?

我想要: 通过节点程序包mqtt.js将来自raspberrypi的消息推送到/通过ec2 mosquitto代理,再返回到raspberrypi。

我在ec2实例上安装了一个mosquitto代理。 使用以下命令:

ssh -i awskeypair.pem ubuntu@ec2-54-153-18-31.us-west-1.compute.amazonaws.com
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update 
sudo apt-get install mosquitto
sudo apt-get install mosquitto-clients
mosquitto

raspberrypi上,我通过node安装了mqtt.js。

已安装的软件包:

npm install mqtt --save

index.js

var mqtt    = require('mqtt');
// pretty sure this var client line isn't connecting if I use test.mosquitto.org it works just fine
var client  = mqtt.connect('mqtt://ec2-54-153-18-31.us-west-1.compute.amazonaws.com');

client.subscribe('presence');
client.publish('presence', 'Hello mqtt');

client.on('message', function (topic, message) {
  // message is Buffer 
  console.log(message.toString());
});

client.end();

问题:我很确定我的带mosquitto代理的ec2实例不可访问


题:

如何连接到我的ec2代理?


我的经纪人上的笔记

ubuntu@ip-172-31-6-23:~$ mosquitto
1425504937: mosquitto version 1.4 (build date 2015-02-18 21:33:29+0000) starting
1425504937: Using default config.
1425504937: Opening ipv4 listen socket on port 1883.

流程图

听起来您没有在安全组中打开端口1883。 如果安全组不是问题,请再次检查您的EC2实例上没有运行IPTables

不知道这是否也与ec2有关,但是对于IoT,我通过在connect调用中正确设置options对象来使MQTT.js工作。

var client = mqtt.connect('mqtts://<yourawsid>.iot.us-east-1.amazonaws.com', {
    port: '8883',
    cert: fs.readFileSync('<path>/cert.pem'),
    key: fs.readFileSync('<path>/privateKey.pem')
    }
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM