Socket.IO ohne http-server?
Ich arbeite derzeit mit der Steckdose.IO fro nodejs zu teilen einige Echtzeit-Informationen zwischen einem server und einigen clients. Sollten die clients nur mit dem server kommunizieren nicht mit einander.
Unter windows ist alles in Ordnung und ich kann Informationen weitergeben, aber wie es die Dinge auf eine linux-vps, hab ich das problem, dass er begann alles auf einem ipv6-socket wich machte es mir schwer, mich zu verbinden mit dem clientseitigen browser-Bibliothek aus der Buchse.io
Starte ich den server wie diesem:
io = require('socket.io').listen(3000);
wich geklappt, und ich konnte eine Verbindung herstellen. Nun auf dem linux-vps habe ich versucht zu verhindern, dass ipv6 über eine ipv4-Adresse wie dieser
io = require('socket.io').listen(3000, '0.0.0.0');
aber das hat nicht funktioniert, nicht auf linux und nicht auf windows. Er nicht binden Sie den socket an die ip, die ich will, es sei denn, ich verwende den http-server wie diesem:
http = require('http').createServer().listen(3000, '0.0.0.0');
io = require('socket.io').listen(http);
Nun meine Frage, muss ich den http-server um das problem zu lösen der Bindung die Buchse auf die richtige lokale ip und port oder ist es anyother Lösung ? Und tut socketio starten Sie einen http-server im hintergrund bei meinem ersten code-Zeile, wie Sie eine web-socket -, oder tut socketio Arbeit, ohne den http-server ?
Danke sehr 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Buchse.io und WebSockets im Allgemeinen, erfordern einen http-server für die erste upgrade-handshake. Also selbst wenn Sie nicht die Steckdose.io mit einem http-server erstellt es für Sie.
Das Problem ist, dass der zweite parameter in Ihrem
io.listen(3000, '0.0.0.0')
ignoriert wird durch die Buchse.io. Wenn Sie brauchen, um zu Steuern, welche Netzwerkschnittstelle zu hören auf, sollten Sie den code in Ihre Letzte snippet, wie es ist im wesentlichen, was-Buchse.io-hinter den kulissen tut.WebSocket-verbindungen werden vom client initiiert die Durchführung einer Protokoll Aktualisieren Anfrage über das normale HTTP-Protokoll, das ist, warum ein HTTP-server benötigt wird.
Buchse.io auf der anderen Seite ist ein bisschen anders als andere WebSocket-Server. Es nutzt Motor.IO unter der Haube, die eine Umsetzung der Ziele der Zuverlässigkeit. Standardmäßig emuliert eine WebSocket-Verbindung via XHR /JSONP-polling (normale HTTP-Anfrage-Antwort-passiert regelmäßig), aber rüstet die Verbindung in eine WebSocket-Verbindung, wenn es möglich ist. Der Grund für dieses ist, weil Ihre Forschung hat gefunden, dass verschiedene firewalls, Proxys und anti-Viren-software in der Tat zu blockieren WebSocket-verbindungen, und deren Motor.IO-Implementierung verbirgt diese Tatsache, um Sie, ohne Sie zu implementieren, wird eine fallback-Lösung, falls die WebSocket-Verbindung wird blockiert.