Ich habe diesen einfachen node.js Servercode mit socket.io (1.5):Node.js Socket.io Aktualisierung der Seite mehr Verbindungen
var io = require('socket.io').listen(8080);
io.on('connection', function(socket) {
console.log(' %s sockets connected', io.engine.clientsCount);
socket.on('disconnect', function() {
console.log("disconnect: ", socket.id);
});
});
Wenn ich diesem Code und drücken Sie F5 mehrmals ausführen, in einigen Fällen Neue Verbindung wird erstellt, bevor die Verbindung getrennt wird. Nach einiger Zeit denke ich, es ist der Heartbeat Timout, alle Verbindungen werden geschlossen. Sehen Sie das Ergebnis:
2 sockets connected
3 sockets connected
4 sockets connected
5 sockets connected
6 sockets connected
7 sockets connected
8 sockets connected
9 sockets connected
10 sockets connected
11 sockets connected
disconnect: 0h_9pkbAaE3ftKT9AAAL
11 sockets connected
12 sockets connected
13 sockets connected
14 sockets connected
disconnect: oB4HQRCOY1UIvvZkAAAP
14 sockets connected
15 sockets connected
disconnect: LiIN0oDVoqbePgxFAAAR
15 sockets connected
16 sockets connected
17 sockets connected
18 sockets connected
disconnect: zxvk-uhWABHzmu1uAAAV
18 sockets connected
19 sockets connected
20 sockets connected
disconnect: FlboxgTzcjf6ScffAAAY
20 sockets connected
21 sockets connected
disconnect: 9UGXbnzukfGX_UtWAAAa
21 sockets connected
disconnect: pAfXOEz6RocKZdoZAAAb
21 sockets connected
disconnect: DIhTyVgG2LYBawaiAAAc
21 sockets connected
disconnect: W4XOc1iRymfTE2U0AAAd
21 sockets connected
disconnect: WZzegGPcoGDNLRTGAAAe
21 sockets connected
22 sockets connected
disconnect: KVR3-fYH0cz77BmgAAAC
disconnect: ANQknhnxr4l-OAuIAAAD
disconnect: KZE5orNx6u9MbOArAAAE
disconnect: TS6LL3asXrcznfcPAAAF
disconnect: SVNxS3I7KqecdqKhAAAG
disconnect: IE2WE5Y0PJzvxgBfAAAH
disconnect: v69bdJav9PjpThBGAAAI
disconnect: mJKT1ggfOOTshZKgAAAJ
disconnect: YlycVjdcWe0emCAcAAAK
disconnect: MoIDJSzP_L-1RUwuAAAM
disconnect: wAl0x5qwCkrnDDYQAAAN
disconnect: eiTlPEk2Hx_X-L-fAAAO
disconnect: KgkrXxzG_EpXOsPTAAAQ
disconnect: Lvf3kK-6XXEbu3NWAAAS
disconnect: -hOoGdYOIvVK04K_AAAT
disconnect: 3EUmaAYpK-U3Ss9tAAAU
disconnect: HQ6M98FebtKlU3OfAAAW
disconnect: OwgrbRBYbS4j84nmAAAX
disconnect: yN8FZAP4RjUNl2MeAAAZ
disconnect: K9IFTjlgAWzdNfpUAAAf
Meine Frage ist: Ist das ein Bug oder ist dies das normale Verhalten von socket.io? Wie kann ich verhindern, dass die Verbindung überflutet wird, drücken Sie einfach F5?
Mit freundlichen Grüßen Marc
Der Browser sollte offene WebSockets schließen, wenn Sie den Browser aktualisieren und dann sollten Sie eine Verbindung trennen. Wenn nicht, wäre das ein Browser-Bug. Falls der Browser den webSocket nicht sofort schließt, wird socket.io sehen, dass der Socket nicht mehr aktiv ist (wegen des Heartbeats) und der Socket wird schließlich aufgeräumt. – jfriend00
Das passiert bei allen aktuellen Browsern. – mcbookwood
Wie lange dauert es zwischen dem Drücken von F5 und dem Zeitpunkt, an dem der Server die Verbindung trennt? Es sieht auch so aus, als ob etwas falsch in Ihrer Zählung sein könnte, weil Sie nicht zeigen, dass die Anzahl sinkt, wenn Sie eine Trennung erhalten. – jfriend00