1

websockets とcloudmqttを使用することは可能ですか? 次のコードがありますが、何も機能していません。まず、Paho の mqttw31.js を使用し、ホスト ファイルですべての接続の詳細を定義します。

src="js/mqttws31.js" type="text/javascript">
src="js/host.js" type="text/javascript">                                                                        
var mqtt;
var reconnectTimeout = 2000;
function MQTTconnect() {
mqtt = new Paho.MQTT.Client(
                            host,
                            port,
                            "web_" + parseInt(Math.random() * 100,
                            10));
var options = {
     timeout: 3,
     useSSL: useTLS,
     cleanSession: cleansession,
     onSuccess: onConnect,
     onFailure: function (message) {
       $('#status').val("Connection failed: " + message.errorMessage + "Retrying");
       setTimeout(MQTTconnect, reconnectTimeout);
     }
};
mqtt.onConnectionLost = onConnectionLost;
mqtt.onMessageArrived = onMessageArrived;
if (username != null) {
    options.userName = username;
    options.password = password;
}
console.log("Host="+ host + ", port=" + port + " TLS = " + useTLS + " username=" + username + " password=" + password);
mqtt.connect(options);
}
function onConnect() {
    $('#status').val('Connected to ' + host + ':' + port);
    // Connection succeeded; subscribe to our topic
    mqtt.subscribe(topic, {qos: 0});
    $('#topic').val(topic);
    mqtt.publish("/arduino/commando/", "test Intel");
}
function onConnectionLost(response) {
    setTimeout(MQTTconnect, reconnectTimeout);
    $('#status').val("connection lost: " + responseObject.errorMessage + ". Reconnecting");
};
function onMessageArrived(message) {
    var topic = message.destinationName;
    var payload = message.payloadString;
    $('#ws').prepend('<li>' + topic + ' = ' + payload + '</li>');
};
$(document).ready(function() {
MQTTconnect();
});
<header>
<h2>MQTT Test</h2>
</header>
<div>
Subscribed to <input type='text' id='topic' disabled />
Status: <input type='text' id='status' size="80" disabled />
<ul id='ws' style="font-family: 'Courier New', Courier, monospace;"></ul>
</div>

ホスト ファイル内:

host = 'm20.cloudmqtt.com'; // hostname or IP address
port = 13365;
topic = '/arduino/status/';     // topic to subscribe to
useTLS = false;
username = "test";
password = "test";
cleansession = true;
4

2 に答える 2

0

cloudmqtt.com のドキュメントをざっと見てみると、Websockets についてはどこにも言及されていません。

彼らが Mosquitto 1.4 を実行していると仮定すると、これはネイティブ MQTT と MQTT over Websockets に同じポートを使用しないため、1 つのポート番号しか提供しない場合、実際には機能しません。

于 2015-04-22T15:57:23.653 に答える
0

ポート 33365 を使用し、useTLS を true に設定します。

于 2015-04-22T22:27:30.390 に答える