如何通过mqtt.js连接到ec2上的mqtt经纪人?

我想要: 通过节点包mqtt.js将消息从raspberrypi推送到/通过ec2 mosquitto broker并返回到raspberrypi。

我已经在我的ec2实例上安装了一个mosquitto broker。 使用这些命令:

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 

并在一个树莓派我已经安装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(); 

问题:我很确定我的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相关,但是对于物联网,我通过在连接调用中正确设置选项对象来获得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') } );