2017-09-07 4 views
0

Ich versuche, indem Sie die unten stehende Skript auf Intel Edison Board installierte lokal mosquitto Server zu verbinden -Anschluss an mosquitto Server von Intel Edison Board

var client = mqtt.connect("ws://localhost:9001"); 

client.on('connect',() => { 
    console.log("connected"); 
}) 

Aber das Verbindungsereignis oder das Protokoll genannt wird nie. Bitte beachten Sie, dass wenn ich versuche, dies von einer Webseite mit -

Dies funktioniert.

Das Problem ist die Verbindung von der Edison-Platine. Ist jemand mit diesem Problem konfrontiert?

+0

Irgendwelche Fehler in der Moskito-Ausgabe/log? Was bekommen Sie, wenn Sie dem Client einen 'on'-Fehler ('error', function (err) {})' hinzufügen? Auch läuft der Browser für die Webseite tatsächlich auf dem Edison? – hardillb

+0

Die Fehlerfunktion wird auch nicht aufgerufen. Der Browser ist auf meinem Laptop, der mit Moskito verbinden kann. – user1930106

+1

OK, also Broker läuft auf dem Laptop nicht Edison, in diesem Fall sollte die URL die IP-Adresse des Laptops nicht localhost haben (und Sie müssen sicherstellen, dass jede Firewall auf dem Laptop externe Verbindungen auf Port 9001 erlauben) – hardillb

Antwort

1

Wie verprügelt in den Kommentaren aus,

Der Broker ist nicht auf dem Edison laufen, so dass Sie nicht localhost als Wirt in der URL verwenden können. localhost ist der eingebaute Name für die Loopback-Schnittstelle, sodass immer auf die Maschine verwiesen wird, auf der der Code ausgeführt wird.

Sie müssen die IP-Adresse des Computers (des Laptops) verwenden, auf dem der Broker ausgeführt wird.

Wenn Sie all dies in einer Umgebung mit dynamischer IP-Bereitstellung ausführen, möchten Sie etwas namens mDNS/Avahi betrachten, das es Computern im selben Subnetz ermöglicht, von Broadcast-Hostnamen in der Domäne .local adressiert zu werden. Das oder den Broker auf eine Maschine mit einer statischen IP-Adresse und einem DNS-Eintrag verschieben.

Verwandte Themen