Node.js: socket.io zamknij połączenie klienta

Jak mogę zamknąć połączenie z gniazdem po stronie klienta?

Ja używam:

socket.io 0.9node.js 0.10.15express 3.3.4

tj .: wywołanielocalhost/test
-- po stronie serwera

var test = io
.of('/test')
.on('connection', function (socket) {

  console.log('open socket: ' + socket);

  socket.on('disconnect', function () {
    console.log('disconnected event');
    //socket.manager.onClientDisconnect(socket.id); --> endless loop with this disconnect event on server side
    //socket.disconnect(); --> same here
  });
});

-- Strona klienta

var socket = io.connect('http://localhost:3000/test');
socket.on('disconnect', function () {
   console.log('disconnect client event....');
});

socket.emit('getInitData', function (data) {
  .. do something with data
});

Jeśli załaduję stronę testową, potrzebuję pewnych wartości z serwera (getInitData).
Na pierwszej stronie dostaję dane raz, podczas przeładowania lub drugiej wizyty dostaję to dwa razy i tak dalej.

Połączenie po stronie serwera jest automatycznie zamykane po ponownym załadowaniu strony i po opuszczeniu strony.
Ale po stronie klienta połączenie jest nadal otwarte.
Jak mogę zamknąć połączenie po stronie klienta lub sprawdzić, czy istnieje już otwarte połączenie?

AKTUALIZACJA
Próbowałem teraz: (po stronie klienta)

window.onbeforeunload = function(e) {
  socket.disconnect();
};

To uruchamia po stronie klienta zdarzenie rozłączenia, ale wciąż otrzymuję podwójną lub potrójną odpowiedź.

questionAnswers(7)

yourAnswerToTheQuestion