Das ist nicht normal.
Ich bin mit Chrome 24 auf Ubuntu mit dem folgenden Testcode (nur Chrome Dev-Konsole anwerfen und fügen Sie ihn in):
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");
};
}
Hier sind einige durchschnittliche Ergebnisse, die ich für verschiedene Werte von bekommen haben uri:
ws://localhost:6080
: 20 ms (benutzerdefinierter python basierter WebSocket-Server)
ws://localhost:6090
: 3 ms (custom node.js + einaros/ws basierte Web Socket-Server)
ws://echo.websocket.org
: 130 ms
wss://echo.websocket.org
: 190 ms
So verwenden sogar eine verschlüsselte Verbindung zu einem öffentlichen Fern Websocket Server ist immer noch weniger als ein Fünftel einer Sekunde im Durchschnitt, bis die offenen Veranstaltung . Die maximale Zeit, die ich gesehen habe, war 250ms. Bei einer lokalen Verbindung sollte die Verzögerung eigentlich nur wenige Millisekunden betragen.
Meine Vermutung wäre, dass Sie Server-Setup eine Reihe von Verarbeitung vor der Annahme der Verbindung macht. Vielleicht initialisieren Sie eine Reihe von Kundendaten im neuen Verbindungshandler?
aktualisieren:
Hier ist ein einfaches einaros/ws basierte WebSocket-Server, der über 3 ms OnOpen Reaktion unter Verwendung des Client-Test-Code gibt:
var WebSocketServer = require('ws').Server
, wss = new WebSocketServer({port: 6090});
wss.on('connection', function(ws) {
console.log("got connection");
});
Gibt es Gründe, Sie Socket.io nicht verwenden? –
@ Jean-PhilippeLeclerc Ja, ich habe ein paar verschiedene Bibliotheken ausgewertet, die uns besser gepasst haben. Wie ich es verstehe, verwendet socket.io die ws-Bibliothek unter der Haube (sie ist als eine Abhängigkeit von socket.io in npm aufgeführt). Warum haben Sie mit socket.io schnellere Einrichtungszeiten gesehen? – UpTheCreek
Eigentlich nein. Ich hatte dieses Problem bereits in einem meiner Projekte mit socketio. Es war ein kleines beschissenes Testprojekt, also kümmerte es mich nicht wirklich. Ich habe dieses Problem in meinem neuen Projekt nicht. Ich freue mich immer noch auf die Antwort auf Ihre Frage. –