2015-10-17 8 views
14

Ich arbeite derzeit mit dem Socket.IO von nodejs, um einige Echtzeitinformationen zwischen einem Server und einigen Clients zu teilen. Die Clients sollten nur mit dem Server kommunizieren, nicht miteinander.Socket.IO ohne HTTP-Server?

Unter Windows ist alles in Ordnung, und ich kann Informationen teilen, aber wie es Dinge auf einem Linux-vps setzen, habe ich das Problem, dass er alles auf einem IPv6-Socket begann, die es mir schwierig machte, mit dem Client-Browser zu verbinden libary von socket.io

ich den Server wie folgt beginnen:

io = require('socket.io').listen(3000); 

wich funktionierte gut, und ich konnte verbinden. Jetzt auf dem Linux-vps habe ich versucht, ipv6 zu verhindern, indem eine IPv4- Adresse verwenden wie diese

io = require('socket.io').listen(3000, '0.0.0.0'); 

aber das hat nicht funktioniert, nicht auf Linux und nicht auf Windows. Er bindet nicht die Steckdose an die IP ich es will, wenn ich den HTTP-Server wie folgt verwenden:

http = require('http').createServer().listen(3000, '0.0.0.0'); 
io = require('socket.io').listen(http); 

Nun meine Frage ist, habe ich den HTTP-Server verwenden, um das Problem der Bindung der Steckdose zu lösen die richtige lokale ip und port oder gibt es eine andere lösung? Und startet Socketio im Fall meiner ersten Codezeile einen http-Server im Hintergrund, da es sich um einen Web-Socket handelt oder funktioniert socketio ohne den http-Server?

Vielen Dank :)

Antwort

20

Socket.io und WebSockets in der Regel erfordern einen HTTP-Server für die anfängliche Handshake. Selbst wenn Sie Socket.io nicht mit einem HTTP-Server versorgen, erstellt er einen für Sie.

Das Problem ist, dass der zweite Parameter in Ihrem io.listen(3000, '0.0.0.0') von Socket.io ignoriert wird. Sie gehen besser mit Ihrem letzten Snippet, da es genau das ist, was Socket.io hinter den Kulissen macht. Der einzige wirkliche Unterschied ist, dass Sie steuern können, welche Schnittstelle Sie hören möchten.

+0

Vielen Dank, das hilft mir viel + 1 – Arkensor

Verwandte Themen