To nie jest normalne.
używam Chrome 24 na Ubuntu z następującego kodu testowego (tylko odpalić konsolę Chrome Dev i wkleić go w):
function test_ws(uri){
start = new Date().getTime();
ws = new WebSocket(uri);
ws.onopen = function(){
console.log("onopen of", uri, "in", (new Date().getTime() - start), "ms");
};
}
Oto średnie wyniki stałam się dla różnych wartości uri:
ws://localhost:6080
: 20 ms (na zamówienie python oparte serwer websocket)
ws://localhost:6090
: 3 ms (niestandardowe node.js + einaros/Web oparte ws Serwer gniazdo)
ws://echo.websocket.org
: 130 ms
wss://echo.websocket.org
: 190 ms
Więc nawet przy użyciu połączenie szyfrowane do publicznej zdalnym serwerze websocket jest wciąż mniej niż jedną piątą sekundy średnio aż otwartej imprezy . Maksymalny czas jaki widziałem to 250ms. W przypadku połączenia lokalnego opóźnienie powinno wynosić tylko kilka milisekund.
Moje przypuszczenie byłoby, że Ty konfiguracja serwera robi kilka przetwarzania przed odebraniem połączenia. Być może zainicjujesz kilka danych klienta w nowej procedurze obsługi połączenia?
Aktualizacja:
Oto prosty einaros/WS oparty serwer websocket że daje 3 ms onOpen odpowiedzi przy użyciu kodu testowego klient powyżej:
var WebSocketServer = require('ws').Server
, wss = new WebSocketServer({port: 6090});
wss.on('connection', function(ws) {
console.log("got connection");
});
jakiegoś powodu nie używaj Socket.io? –
@ Jean-PhilippeLeclerc Tak, oceniłem kilka różnych bibliotek, dopasowaliśmy je lepiej. Jak jednak rozumiem, socket.io używa biblioteki ws pod maską (jest wymieniona jako zależność socket.io w npm). Dlaczego, widziałeś szybsze czasy instalacji z socket.io? – UpTheCreek
Właściwie nie. Już miałem ten problem w jednym z moich projektów za pomocą socketio. To był trochę gówniany testowy projekt, więc tak naprawdę nie obchodziło mnie to. Nie mam tego problemu w moim nowym projekcie. Nadal nie mogę się doczekać odpowiedzi na twoje pytanie. –