2016-07-31 7 views
1

Ich möchte einen Websocket-Server erstellen. Ich habe gehört, dass socket.io eine gute Wahl ist.Websocket-Server mit nodejs + socket.io kann nicht durch Tester Sites verbunden werden, während ws kann

Ich versuchte socket.io mit nodejs (v4.4.7) (npm installieren --save socket.io), mit seiner Probe server side code. Ein wenig verwirrt, warum der clientseitige Code "http: //" anstelle des "ws: //" Protokolls verwendet, aber nachdem ich einen echten Server zum Testen eingerichtet habe, habe ich sowohl "http //" als auch "ws //" gefunden funktioniert mit dem offiziellen Code.

Alles ist gut bis jetzt. Aber bald fand ich, dass ich keine Verbindung herstellen können Drittanbieter-Online-Tester-Plätze wie:
1. www.websocket.org/echo.html
2. www.blue-zero.com/WebSocket

Die Verbindung schien nie hergestellt oder geschlossen so schnell wie möglich verbunden,
Ich fand "Firefox kann keine Verbindung zum Server unter ws: // mytestserver: 8888 /? Encoding = Text" in Firefox-Konsole,
oder "WebSocket Verbindung zu 'ws: // mytestserver: 8888' fehlgeschlagen: Verbindung wurde vor dem Empfang einer Handshake-Antwort in der Chrome-Konsole geschlossen.

Zuletzt habe ich socket.io in WS geändert (npm install --save ws). Beispielcode von github.com/websockets/ws verwenden. Alle Teststandorte funktionierten gut.

(Natürlich ist mein Endzweck nicht einen Tester Arbeit vor Ort zu machen. Die Tatsache, die websocket lib auf nopoll in meinem Chip integriert basiert, ist genau das gleiche Verhalten wie die Tester-Sites.)

Jeder weiß Der Grund, warum socket.io nicht mit Clients von Drittanbietern funktioniert, während ws das tut? Danke vielmals.

+0

Wie ich 'wissen ws' verwenden nativen HTML-Buchse ohne zusätzliche Skripte auf Client-Seite. Andere Sockets ('socket.io',' sockjs' usw.) erfordern clientseitige Skripte. –

Antwort

1

socket.io erfordert einen Server socket.io auf der serverseitigen Ende der Dinge. Es verbindet sich nicht nur mit einem webSocket Server.

Während socket.io webSocket als zugrunde liegenden Transport verwendet, fügt es eine Schicht oben auf webSocket hinzu, um eine whole bunch of additional features zu implementieren, die serverseitige Unterstützung für socket.io erfordert. Daher können Sie keine Verbindung zu einem einfachen webSocket-Server mit dem socket.io-Client herstellen.

Sie müssen übereinstimmen:

webSocket client <==> webSocket server 
socket.io client <==> socket.io server 
Verwandte Themen