WebSocket Verbindungsaufbau Fehler vom browser
Habe ich mosquitto MQTT-broker läuft auf meinem Rechner. Und ich will laufen der MQTT-client aus dem browser. Dies ist, was ich getan haben, in einer Django-app:
<html>
<head>
<title>Mosquitto Websockets</title>
{% load staticfiles %}
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="{% static 'js/mqttws31-min.js' %}" type="text/javascript"></script>
<script src="{% static 'js/jquery.min.js' %}" type="text/javascript"></script>
<script src="{% static 'js/config.js' %}" type="text/javasacript"></script>
<script type="text/javascript">
var mqtt;
var reconnectTimeout = 2000;
function MQTTconnect() {
host = '127.0.0.1';
port = 1883;
useTLS = false;
cleansession = true;
username = null;
password = null;
mqtt = new Paho.MQTT.Client(host, port,
"myclientid_" + parseInt(Math.random() * 100, 10));
/*mqtt = new Messaging.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);
}
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();
});
</script>
</head>
<body>
<h1>Mosquitto Websockets</h1>
<div>
<div>Subscribed to <input type='text' id='topic' disabled />
Status: <input type='text' id='status' size="80" disabled /></div>
<ul id='ws' style="font-family: 'Courier New', Courier, monospace;"></ul>
</div>
</body>
</html>
Bekomme ich
WebSocket connection to 'ws://127.0.0.1:1883/mqtt' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET mqttws31-min.js:15
Host=127.0.0.1, port=1883 TLS = false username=null password=null (index):47
Ich bin neu hier also nicht in der Lage bin diese zu lösen. Keine Hilfe?
Edit1:
Ich Zwickte die config-Datei, und jetzt ist es erfolgreich verbindet zu testen.mosquitto.org:8080. Ich abonniert #, aber es ist nicht in der Lage zum abrufen der veröffentlichten Nachricht. Ich denke, die Funktion onMessageArrived(message)
funktioniert nicht. Es gibt keine Fehler in der Konsole, also nicht um alle Fehler zu identifizieren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie sicher, dass Sie so konfiguriert haben, dass der broker zu akzeptieren, websockets-verbindungen auf port 1883? Standardmäßig würde man erwarten, dass das Zuhören für MQTT-verbindungen, keine websockets.
Versuchen, indem Sie Folgendes in deine config-Datei:
Als Scott sagt, Sie könnten versuchen, den Anschluss Ihrer Kunden zu testen.mosquitto.org:8080, um zu sehen, ob es funktioniert.
Hier ist eine Website, die läuft über ein "MQTT über Websockets" server, wo die URL kann als client fungieren, so dass Sie veröffentlichen können, dann haben Sie Ihren eigenen browser als client abonnieren bestimmtes Thema
könnte es lassen, Sie zu necken abgesehen von Verbindungsproblemen ... auch hier ist noch ein nodejs-library implementiert ähnliche Funktionalität