Socket.io emite datos duplicates después de la actualización del browser

Tengo una página que tiene un button. Cuando se hace clic en el button, obtiene datos a través de socket.io. Sin embargo, cada vez que vuelvo a cargar la página, socket.io devolverá una copy extra de datos del set de datos anterior. Entonces mis datos se verían bien por primera vez la carga de la página (ejemplo: abcd). Luego, vuelva a cargar la página y volverá a get 2n datos (abcdabcd), vuelva a cargar la página nuevamente, obtendré 3n datos (abcdabcdabcd), etc.

¿Cómo evito que los datos duplicates vuelvan al cliente cuando la página se recarga? Aquí está mi código.

Lado del server:

app.get('/test', function(req, res){ // some code... io.sockets.on("connection", function(socket){ var socketFn = function(data){ socket.emit("trends", { trends: JSON.parse(networkingisData) }); }; socket.on("action", socketFn); socket.on("disconnect", function(){ socket.removeListener("action", socketFn); // this doesn't work }); }); res.render('test'); }); 

Lado del cliente:

  var socketOpts = { "sync disconnect on unload" : true }; var socket = io.connect("", socketOpts); socket.on("trends", function(data){ // data received from the node server, so do something with it }); function action(){ socket.emit("action", {phrase: "some dummy data"}); return false; } // already checked client side doesn't fire multiple click event $("button#click").off("click").on("click", action); 

Esto se debe a que escucha la connection tantas veces como el cliente llega a la página.

 app.get('/test', function(req, res){ //when client opens the page io.sockets.on("connection", function(socket){ //start listening to new connection ... 

Se considera una mala idea inicializar events de connection de lists dentro de sus routes. Debería hacerse solo una vez a nivel mundial. Aquí, cada vez que su cliente accede a la página, escuchará los events tantas veces que se acceda a la página.