Escribí para publicar un valor de rfid y, mientras me suscribía dentro de javascript, se perdió la conexión del socket y adjunté la captura de pantalla de mi consola.
valor.php
<body> <div id="print"></div> <!-- jquery library --> <script src="https://code.jquery.com/jquery-3.1.0.min.js"></script> <!-- paho MQTT library --> <script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script> <script src="app.js"></script> </body>Estoy tratando de conectarme usando el agente de hivemq y usando el número de puerto 8000, pero no se conecta.
aplicación.js
var hostname = "broker.hivemq.com"; var clientId = "someid"; var username = "username"; var password = "password"; var subscription = "sometopicname"; mqttClient = new Paho.MQTT.Client(hostname, 8000, clientId); mqttClient.onMessageArrived = MessageArrived; mqttClient.onConnectionLost = ConnectionLost; Connect(); function Connect() { mqttClient.connect({ onSuccess: Connected, onFailure: ConnectionFailed, userName: username, password: password, useSSL: false }); } function Connected() { console.log("Connected"); mqttClient.subscribe(subscription); } function ConnectionFailed(res) { console.log("Connection failed: " + res.errorMessage); } function ConnectionLost(res) { if (res.errorCode !== 0) { console.log("Connection lost:" + res.errorMessage); Connect(); } } function MessageArrived(message) { console.log(message.payloadString); }Primero, ¿está 100 % seguro de que el puerto 8000 está configurado para admitir MQTT a través de Websockets?
En segundo lugar, parece que tiene un valor de ID de cliente codificado, con esto solo podrá tener 1 cliente conectado a la vez. CADA página debe tener un ID de cliente único, si intenta conectar 2 clientes con el mismo ID de cliente (2 o más instancias de la página en cualquier navegador) expulsará al otro del corredor. ClientIds DEBE ser globalmente único.
Si después de haber verificado el primero y arreglado el segundo, debe verificar los registros del corredor para ver por qué puede estar cerrando la conexión.