2016-06-30 5 views
1

So habe ich ein fertiges nodejs + socket.io + reactjs Projekt, das auf meinem Rechner arbeitet. Ich kann verschiedene Registerkarten oder Browser in meinem Computer öffnen und testen, und es funktioniert. Ich wollte es jedoch auf einem anderen Rechner in meinem lokalen Netzwerk testen. Wenn ich es über das WLAN auf einem anderen Computer mit meiner Netzwerk-IP-Adresse verbinde, kann ich die Seite sehen. Das Socket.io funktioniert jedoch nicht. Wenn ich die Konsole in Chrom (andere Maschine) öffnen, dann ist dies der Fehler sehe ich:Reagieren js Socket io funktioniert nicht im lokalen Netzwerk wifi

GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=LMXV0Uf net :: ERR_CONNECTION_REFUSED

Dies ist mein Knoten app-server.js:

app.use(express.static('./public')); 
app.use(express.static('./node_modules/bootstrap/dist')); 
var server = app.listen(3000); 
var io = require('socket.io').listen(server); 

Wie kann ich dieses Problem lösen? Wie empfiehlt sich die Bereitstellung in der Produktion, damit socket.io funktioniert?

+0

Die andere Maschine zeigt möglicherweise auf Ihren Web-Server über die Browser-URL, aber es heißt dort, dass es versucht, sich mit 'localhost' zu verbinden, was der andere Computer ist. Ihre clientseitige Socketverbindung muss auch auf den Computer zeigen, auf dem sich der Server befindet. Soll das über LAN laufen oder willst du es nur ausprobieren? – azium

+0

@azium Hallo azium. Nein, ich habe es nur in meinem LAN getestet. Sorry, ich bin nur ein Anfänger. Was mache ich, um das zu lösen? Mache ich die app/socket.io hören die Netzwerk-IP? – Karl

Antwort

2

Es gibt zwei Teile der Socket-App .. das Zeug, das irgendwo auf einem einzigen Server lebt, und der Client-Code, der an andere Computer verteilt wird, die sich mit dem Server verbinden müssen, um die Socket-Verbindung herzustellen.

Ihr Servercode muss wahrscheinlich nicht geändert werden. Wenn Sie es über eine IP-Adresse erreichen können, bedeutet das, dass es korrekt funktioniert.

Angenommen, Sie haben die Website über http://1.2.3.4:3000

Irgendwo in der Client-Seite Code zugreifen können Sie so etwas wie haben werden: Ihr

import io from 'socket.io-client' 
let serverUrl = 'localhost:3000' 
let socket = io(serverUrl) 

Sie müssen sich ändern serverUrl an die IP-Adresse des Server, so http://1.2.3.4:3000

Dies liegt daran, localhost, wenn sie von einem anderen Computer geladen wird dass Computer zeigen .. aber Sie müssen die Socket-Verbindung zurück zum ursprünglichen Server herstellen.

+0

Ja! Ich danke dir sehr. Jetzt weiß ich mehr über Socket io und nodejs. – Karl