Websocket を介して JavaScript クライアントからローカルの Mosquitto 1.4.10 ブローカーに接続できません。
同じ JavaScript クライアントが、Websocket を介してポート 8080 で test.mosquitto.org の公開ブローカーに正常に接続しています。
ポート 1883 での MQTT プロトコル接続は正常に動作しており、mosquitto_pub と mosquitto_sub を使用してテストしました。
私のブローカーは、Ubuntu 14.04 を実行している VirtualBox 内にセットアップされています。
同じ仮想マシンに libwebsockets をインストールしました。
私のローカル ブローカーは、config.mkファイルでWITH_WEBSOCKETS:=yesでコンパイルされました。
同じ仮想マシンの JavaScript クライアント Web ページを Firefox ブラウザーからロードすると、ブラウザー コンソールに次のエラー メッセージが表示されます。
Firefox が ws://localhost:8080/mqtt でサーバーへの接続を確立できない
これを修正するためのあなたの提案は大歓迎です。
ありがとう。
これが私の Mosquitto .conf ファイルです。
port 1883
listener 8080
protocol websockets
log_type all
websockets_log_level 1023
connection_messages true
Mosquitto サーバーのログは次のとおりです (websockets のログ レベルが 1023 に設定され、詳細ログがオンになっています。JavaScript Web ページを読み込んでもメッセージは表示されません)。
1481381105: mosquitto バージョン 1.4.10 (ビルド日付 2016-12-10 18:47:37+0530)
1481381105 から: /etc/mosquitto/mosquitto.conf から読み込まれた構成。
1481381105: ポート 8080 で websockets リッスン ソケットを
開きます。 1481381105: 初期ログ レベル 10231481381105: Libwebsockets バージョン: 2.1.0 manavkumarm@manav-alljoyn
1481381105: IPV6 はコンパイルされていません
1481381105: libev サポートはコンパイルされていません
1481381105: libuv サポートはコンパイルされていません
1481381105: スレッド: 各 1024 fds 1481381105
: mem: プラットフォーム fd マップ: 4096 バイト' ポート 8080、3 つのプロトコル、IPv6 オフ 1481381105: 非 SSL モードを使用 1481381105: ポート 8080 で リッスン 1481381105: mem: per-conn: 376 バイト + プロトコル rx buf 1481381105: canonical_hostname = mqtt 1481381105: ポート 183 ソケットを開く. 1481381105: ポート 1883 で IPv6 リッスン ソケットを開いています。
JavaScript のソース コードは次のとおりです。
<html>
<body>
<script src="mqttws31.js"></script>
<script>
try
{
// Create a client instance
console.log("Creating client object...");
client = new Paho.MQTT.Client("localhost", Number(8080), "manav");
//client = new Paho.MQTT.Client("test.mosquitto.org", Number(8080), "manav");
// set callback handlers
console.log("Setting handlers...");
client.onConnectionLost = onConnectionLost;
client.onMessageArrived = onMessageArrived;
// connect the client
console.log("Connecting...");
client.connect( {
onSuccess: onConnect,
mqttVersion: 4
});
}
catch (e)
{
console.log("Error: " + e.description);
}
// called when the client connects
function onConnect()
{
// Once a connection has been made, make a subscription and send a message.
console.log("Connected");
setTimeout( function() {
client.subscribe("world");
message = new Paho.MQTT.Message("Hello");
message.destinationName = "world";
client.send(message);
//client.disconnect();
}, 5000);
}
// called when the client loses its connection
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
console.log("Connection lost: " + responseObject.errorMessage);
}
}
// called when a message arrives
function onMessageArrived(message) {
console.log("Received Message: " + message.payloadString);
client.disconnect();
}
</script>
<h1>My MQTT Websockets Example</h1>
</body>
</html>