Obecnie istnieje wiele bibliotek websocket dla node.js, najpopularniejsze wydają się:
- 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
Jednak nie mogę znaleźć żadnych konkretnych porównań między nimi ... Najwyraźniej Socket.io był niesamowity, ale stał się dość przestarzały i ma błędne wersje. Zarówno ws, jak i websocket-node twierdzą, że są najszybsze. Engine.io wydaje się nowy, ale o wiele cięższy niż lżejsze aletarntives.
Byłoby wspaniale, gdybyśmy my lub ktoś mógł ułożyć odpowiedź, która służy jako przewodnik na temat tego, która biblioteka gniazd ma być używana i kiedy, a także porównanie między nimi.
Odpowiedzi:
Rozwijanie piłki dzięki tej odpowiedzi wiki społeczności . Czuć się swobodnie edytować mnie z twoich ulepszeń.
serwer i klient ws WebSocket dla node.js. Jedna z najszybszych bibliotek, jeśli nie najszybsza.
serwer i klient WebSocket -node WebSocket dla node.js
websocket-driver-node WebSocket serwer i parser protokołu klienta node.js - używany w faye-websocket-node
faye-websocket-node Serwer i klient WebSocket dla node.js - używany w faye i sockjs
serwer i klient socket.io WebSocket dla node.js + klient dla przeglądarek + (v0 ma najnowsze do najstarszych awarie, v1 Socket.io używa engine.io) + kanały - używane w stack.io. Biblioteka klienta próbuje połączyć się ponownie po rozłączeniu.
Serwer i klient WebSocket sockjs dla node.js i innych + klient dla przeglądarek + od najnowszych do najstarszych
faye serwer i klient WebSocket dla node.js i innych + klient dla przeglądarek + awaryjne + obsługa innych języków po stronie serwera
Klasterowy serwer czasu rzeczywistego deepstream.io, który obsługuje połączenia WebSockets i TCP oraz zapewnia synchronizację danych, pub / sub oraz żądanie / odpowiedź
socketcluster klaster serwerów WebSocket, który wykorzystuje wszystkie rdzenie procesora na twoim komputerze. Na przykład, jeśli miałbyś użyć instancji xlarge Amazon EC2 z 32 rdzeniami, byłbyś w stanie obsłużyć prawie 32-krotny ruch w pojedynczej instancji.
primus Zapewnia wspólny interfejs API dla większości powyższych bibliotek w celu łatwego przełączania + poprawy stabilności dla wszystkich z nich.
Kiedy użyć:
korzystaj z podstawowych serwerów WebSocket, jeśli chcesz korzystać z natywnych implementacji WebSocket po stronie klienta, uważaj na niezgodności przeglądarki
korzystaj z bibliotek rezerwowych, jeśli zależy Ci na rezerwach przeglądarek
korzystaj z pełnych bibliotek, gdy zależy Ci na kanałach
używaj primusa, gdy nie masz pojęcia, czego użyć, nie masz ochoty na przepisywanie aplikacji, gdy potrzebujesz zmienić frameworki ze względu na zmieniające się wymagania projektu lub potrzebujesz dodatkowej stabilności połączenia.
Gdzie testować:
Firecamp to środowisko testowe z interfejsem GUI dla SocketIO, WS i wszystkich głównych technologii czasu rzeczywistego. Debuguj wydarzenia w czasie rzeczywistym podczas ich opracowywania.
źródło
ws
.Aktualizacja: Ta odpowiedź jest nieaktualna, ponieważ od tego czasu wydawane są nowsze wersje wymienionych bibliotek.
źródło
npm ws było dla mnie odpowiedzią. Uznałem, że jest to mniej inwazyjne i bardziej bezpośrednie. Dzięki temu łączenie stron internetowych z usługami odpoczynku było banalne. Udostępniono prosty kod w tym poście.
źródło
ws
, na przykładws://myserver.com
. I tak, można je skonfigurować do obsługi również przy użyciu portów 80 i 443. Korzystając z odwrotnego proxy, takiego jak nginx, możesz kierowaćWebSocket
adresy URL protokołu do innego portu z normalnych protokołów HTTP.express-ws
pozwala dodawaćws
trasy w ekspresowej aplikacji.