2

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: 初期ログ レベル 1023

1481381105: 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>

4

1 に答える 1