2017-03-12 34 views
2

私はAngularJSアプリケーションを構築しており、Paho JavaScriptクライアントを使用してWebソケット経由でMQTTブローカー(test.mosquitto.org)に接続しています。これはうまく動作します。私はMQTTブローカーにダイレクトMQTTを介して接続したいと思っていました。(Webソケットを有効にしていないブローカーをサポートするために)WebSocketを使用しないMQTTのJavaScriptクライアント

Pahoクライアントは直接MQTTをサポートしていないので、mqtt.js(browserMqtt.js)のブラウザー化バージョンを試しました。

//var options = { host: "test.mosquitto.org", port: 8080 }; //works! 
var options = { host: "test.mosquitto.org", port: 1883 }; //does not work! 
var client = mqtt.connect(options); 

繰り返しますが、これはWebSocketを(ポート8080)上で動作しますが、私は直接MQTT(ポート1883)経由で接続しようとすると、私はエラーメッセージメッセージが表示されます:ここで

は私のコードからの主なラインですコンソールでbrowserMqtt.jsから、ではないと私のエラーハンドラが発射されていませんから。

WebSocket connection to 'ws://test.mosquitto.org:1883/' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET 

私のアプリはChromeブラウザ上で実行されています。

これはコードの問題か設計上の問題ですか? MQTTを使用してブラウザーからブローカーに接続することができない何らかの理由で、ライブラリーがWebSocket呼び出しを強制していますか?

私は数日かけて読んだことのあるメッセージから混合メッセージを受け取りますが、解決策として使用できる明確な例はありません。

答えて

4

WebSocketは、プレーンなTCPソケットとは対照的に、ブラウザーがサポートするプロトコルです(直接MQTTを実行する場合には最終的に必要になります)。あなたのブローカーは、だから、使用することを回避する方法があるように行っていない

にWebSocketの接続を受け入れる必要があり

ドキュメントブラウザセクションでMQTT.js statesのためにブラウザーからWebSocketを介したMQTT。通常のMQTTプロトコルを使用してWebSocket接続を受け入れてターゲットブローカに渡す(サーバー側)プロキシを作成することができます。

関連する問題