Derzeit gibt es eine Vielzahl von Websocket-Bibliotheken für node.js. Die beliebtesten scheinen zu sein:
- https://github.com/Worlize/WebSocket-Node
- https://github.com/einaros/ws
- https://github.com/LearnBoost/engine.io
- https://github.com/learnboost/socket.io
- https://github.com/sockjs
Allerdings kann ich keine konkreten Vergleiche zwischen ihnen finden ... Anscheinend war Socket.io fantastisch, ist aber ziemlich veraltet und hat fehlerhafte Builds. Sowohl ws als auch websocket-node behaupten, dass sie die schnellsten sind. Und engine.io scheint neu zu sein, aber viel schwerer als die leichteren Aletarntives.
Es wäre erstaunlich, wenn wir oder jemand eine Antwort zusammenstellen könnte, die als Leitfaden für die zu verwendende Socket-Bibliothek und wann sowie als Vergleich zwischen ihnen dient.
Antworten:
Mit dieser Community-Wiki- Antwort den Ball ins Rollen bringen . Fühlen Sie sich frei , mich mit Ihren Verbesserungen zu bearbeiten .
ws WebSocket Server und Client für node.js. Eine der schnellsten Bibliotheken, wenn nicht die schnellste.
websocket-node WebSocket-Server und -Client für node.js
Websocket-Treiberknoten WebSocket-Server und Client-Protokoll-Parser node.js - werden in faye-websocket-node verwendet
faye-websocket-node WebSocket-Server und -Client für node.js - wird in faye und sockjs verwendet
socket.io WebSocket-Server und -Client für node.js + Client für Browser + (v0 hat die neuesten bis ältesten Fallbacks, v1 von Socket.io verwendet engine.io) + Kanäle - werden in stack.io verwendet. Die Clientbibliothek versucht, die Verbindung nach dem Trennen wieder herzustellen.
sockjs WebSocket-Server und -Client für node.js und andere + Client für Browser + neueste bis älteste Fallbacks
faye WebSocket Server und Client für node.js und andere + Client für Browser + Fallbacks + Unterstützung für andere serverseitige Sprachen
Clusterfähiger Echtzeitserver deepstream.io, der WebSockets- und TCP-Verbindungen verarbeitet und Datensynchronisation, Pub / Sub und Request / Response bietet
Socketcluster WebSocket-Servercluster, der alle CPU-Kerne auf Ihrem Computer verwendet. Wenn Sie beispielsweise eine xlarge Amazon EC2-Instanz mit 32 Kernen verwenden, können Sie den 32-fachen Datenverkehr auf einer einzelnen Instanz verarbeiten.
primus Bietet eine gemeinsame API für die meisten der oben genannten Bibliotheken für einfaches Umschalten und Stabilitätsverbesserungen für alle.
Wann zu verwenden:
Verwenden Sie die grundlegenden WebSocket-Server, wenn Sie die nativen WebSocket-Implementierungen auf der Clientseite verwenden möchten. Achten Sie auf die Inkompatibilitäten des Browsers
Verwenden Sie die Fallback-Bibliotheken, wenn Sie sich für Browser-Fallbacks interessieren
Verwenden Sie die Bibliotheken mit allen Funktionen, wenn Sie sich für Kanäle interessieren
Verwenden Sie primus, wenn Sie keine Ahnung haben, was Sie verwenden sollen, nicht in der Stimmung sind, Ihre Anwendung neu zu schreiben, wenn Sie aufgrund sich ändernder Projektanforderungen das Framework wechseln müssen oder zusätzliche Verbindungsstabilität benötigen.
Wo zu testen:
Firecamp ist eine GUI-Testumgebung für SocketIO, WS und alle wichtigen Echtzeittechnologien. Debuggen Sie die Echtzeitereignisse, während Sie sie entwickeln.
quelle
ws
.Update: Diese Antwort ist veraltet, da seitdem neuere Versionen der genannten Bibliotheken veröffentlicht werden.
quelle
npm ws war die Antwort für mich. Ich fand es weniger aufdringlich und direkter. Damit war es auch trivial, Websockets mit Rest-Services zu mischen. Gemeinsamer einfacher Code für diesen Beitrag.
quelle
ws
, zws://myserver.com
. Und ja, sie können so konfiguriert werden, dass sie auch über 80 und 443 Ports bedient werden. Mit einem Reverse-Proxy wie nginx können Sie dieWebSocket
Protokoll-URLs von den normalen HTTP-Protokollen an einen anderen Port weiterleiten.express-ws
ermöglicht das Hinzufügen vonws
Routen in der Express-App.