Jaką bibliotekę websocket używać z węzłem.js? [zamknięte]

zamknięte. to pytanie nie spełnia wytycznych dotyczących przepełnienia stosu . Obecnie nie przyjmuje odpowiedzi.

chcesz poprawić to pytanie? Update the pytanie więc to on-topic {[3] } dla przepełnienia stosu.

Zamknięte 4 lata temu .

Popraw to pytanie

Obecnie istnieje mnóstwo bibliotek websocket dla node.js, najpopularniejsze wydają się be:

Jednak nie mogę znaleźć żadnych konkretnych porównań między którymkolwiek z nich... Najwyraźniej Socket.io był świetny, ale stał się dość przestarzały i ma wadliwe buildy. Zarówno ws jak i websocket-node twierdzi, że są najszybsze. Oraz engine.io wydaje się nowy, ale dużo cięższy od lżejszych aletarntives.

Byłoby zdumiewające, gdybyśmy my lub ktoś mógł ułożyć odpowiedź, która służy jako przewodnik, jakiej biblioteki socket użyć i kiedy, a także porównanie między nimi.

Author: Igor Antun, 2013-05-06

3 answers

Getting the ball rolling with this community wiki answer. Zapraszam do edytuj mnie {[2] } ze swoimi ulepszeniami.

  • Ws WebSocket server i client for node.js. Jedna z najszybszych bibliotek, jeśli nie najszybsza.

  • Websocket-node WebSocket server i client for node.js

  • Websocket-driver-node WebSocket server and client protocol Parser node.js-używany w faye-websocket-node

  • Faye-websocket-node WebSocket server i klient dla node.js-używane w faye i sockjs

  • Socket.io WebSocket server i client for node.klient js + dla przeglądarek + (v0 ma od najnowszych do najstarszych fallbacków, v1 z Socket.io zastosowania engine.io) + kanały-używane w stack.io. Biblioteka klienta próbuje ponownie połączyć się po rozłączeniu.

  • Sockjs WebSocket server i client for node.js i inne + klient dla przeglądarek + Najnowsze do najstarszych fallbacks

  • Faye WebSocket serwer i klient dla węzła.js i inne + klient dla przeglądarek + fallbacks + wsparcie dla innych języków po stronie serwera

  • Deepstream.io serwer w czasie rzeczywistym, który obsługuje Websockety i połączenia TCP i zapewnia synchronizację danych, pub/sub I request/response

  • Socketcluster WebSocket server cluster, który wykorzystuje wszystkie rdzenie procesora na twoim komputerze. Na przykład, jeśli użyjesz wystąpienia Xlarge Amazon EC2 z 32 rdzeniami, będziesz w stanie obsłużyć prawie 32 razy większy ruch na pojedynczej instancji.

  • Primus zapewnia wspólne API dla większości powyższych bibliotek dla łatwego przełączania i poprawy stabilności dla wszystkich z nich.

Kiedy stosować:

  • Użyj podstawowych serwerów WebSocket, jeśli chcesz korzystać z natywnych implementacji WebSocket na stronie klienta, uważaj na niezrozumiałość przeglądarki

  • Korzystaj z bibliotek awaryjnych, gdy zależy ci na awaryjności przeglądarki

  • Używaj w pełni funkcjonalnych bibliotek, gdy zależy ci na kanałach

  • Używaj primus, gdy nie masz pojęcia, czego używać, nie jesteś w nastroju do przepisywania aplikacji, gdy musisz zmienić frameworki ze względu na zmieniające się wymagania projektu lub potrzebujesz dodatkowej stabilności połączenia.

Gdzie test:

Firecamp to środowisko testowe GUI dla SocketIO, WS i wszystkich głównych technologii czasu rzeczywistego. Debuguj zdarzenia w czasie rzeczywistym podczas ich opracowywania.

 396
Author: balupton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-03 17:06:16

Update: ta odpowiedź jest nieaktualna, ponieważ od tego czasu wydawane są nowsze wersje wymienionych bibliotek.

Socket.IO v0. 9 jest przestarzały i trochę buggy, a Engine.IO jest tymczasowy następca. Socket.IO v1. 0 (który ukaże się wkrótce) będzie użycie Engine.IO i być znacznie lepszym niż v0. 9. Polecam do użycia Engine.IO do Socket.IO wydana została Wersja 1.0.

"ws" nie obsługuje fallback, więc jeśli przeglądarka klienta nie wsparcie websockets, to nie będzie działać, w przeciwieństwie do Socket.IO oraz Engine.IO który używa long-polling itp Jeśli websockets nie są dostępne. Jednakże, "ws" wydaje się najszybszą biblioteką w tej chwili.

Zobacz mój artykuł Socket.IO, Engine.IO i Primus: https://medium.com/p/b63bfca0539

 40
Author: Deniz Ozger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-09 10:06:04

Npm ws było dla mnie odpowiedzią. Uznałem to za mniej natrętne i bardziej proste. Z tym było również trywialne, aby połączyć websockets z usług rest. Udostępniony prosty kod w tym poście.

var WebSocketServer = require("ws").Server;
var http = require("http");
var express = require("express");
var port = process.env.PORT || 5000;

var app = express();
    app.use(express.static(__dirname+ "/../"));
    app.get('/someGetRequest', function(req, res, next) {
       console.log('receiving get request');
    });
    app.post('/somePostRequest', function(req, res, next) {
       console.log('receiving post request');
    });
    app.listen(80); //port 80 need to run as root

    console.log("app listening on %d ", 80);

var server = http.createServer(app);
    server.listen(port);

console.log("http server listening on %d", port);

var userId;
var wss = new WebSocketServer({server: server});
    wss.on("connection", function (ws) {

    console.info("websocket connection open");

    var timestamp = new Date().getTime();
    userId = timestamp;

    ws.send(JSON.stringify({msgType:"onOpenConnection", msg:{connectionId:timestamp}}));


    ws.on("message", function (data, flags) {
        console.log("websocket received a message");
        var clientMsg = data;

        ws.send(JSON.stringify({msg:{connectionId:userId}}));


    });

    ws.on("close", function () {
        console.log("websocket connection close");
    });
});
console.log("websocket server created");
 32
Author: MFAL,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-01 08:10:11