ポート1883を使用してAWS EC2サーバーでMQTTブローカーをセットアップしようとしています。これまでのところ、ruby-mqtt gem私はウェブサイトのPaho Javascript Clientで設定することに問題があります。AWS EC2 Ubuntu + Ruby on RailsでPaso Javascript Client(MQTT)を設定する
私がこれまで行ってきた:
Mosquittoを
私のAWS EC2インスタンス上mosquittoをインストールし、そして私がローカルコマンド
を使用してトピックを購読実行し、ポート1883でリッスンしていますmosquitto_sub -h localhost -p 1883 -v -t 'topic1'
AWS EC2のセキュリティグループ
のRuby on Railsの
インストールルビーMQTT宝石をポート1883経由(TCPプロトコルの下で)トラフィックを許可し、レールコンソール(開発環境)
に以下のコードを実行することによって動作してMQTTをテストMQTT::Client.connect(ip_address_or_domain_name) do |c|
c.publish('topic1', 'message to topic 1')
end
mosquitto_sub
が実行されていた端末にメッセージが表示されます。 nginxの
は、このすべては、nginxの設定ファイル上の任意の設定なしで行われました。
PAHOクライアントは、だから、私は、ローカルコンピュータ上のローカルレールサーバーを解雇し、私のHTMLビューの1に例のJavaScriptスニペットを実行します。
// Create a client instance
client = new Paho.MQTT.Client("mqtt.hostname.com", Number(1883), "", "clientId")
// set callback handlers
client.onConnectionLost = onConnectionLost;
client.onMessageArrived = onMessageArrived;
// connect the client
client.connect({onSuccess:onConnect});
// called when the client connects
function onConnect() {
// Once a connection has been made, make a subscription and send a message.
console.log("onConnect");
client.subscribe("topic1");
message = new Paho.MQTT.Message("Hello");
message.destinationName = "topic1";
client.send(message);
}
// called when the client loses its connection
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
console.log("onConnectionLost:"+responseObject.errorMessage);
}
}
// called when a message arrives
function onMessageArrived(message) {
console.log("onMessageArrived:"+message.payloadString);
}
ただし、接続できません。 Chromeのデベロッパーコンソールに表示されるエラーは次のとおりです。
WebSocket connection to 'ws://mqtt.example.com:1883/' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET
ここで何が間違っているのかわかりません。どんな助けにも大変感謝しています!前もって感謝します!
あなたのモスキートto.confは素晴らしいです! Thx – domih
:)素晴らしい私は助けになることができます – Vic