 <p>I manage to do it but I'm not satisfied please if someone know a better way to do this explain it. In app.js :</p> <pre><code>io.sockets.on('connection', function(socket) { var form = require('./controlers/form'); form.init(); var form_copy = _.extend({},form); socket.set( socket.id, form_copy, function() { console.log("form setted"); socket.on('next', function(data) { console.log("next"); socket.get( socket.id,function(error,form_socket){ //I will handle the error ty Tim console.log("form getted"+error); console.log(form_socket); socket.emit('next', form_socket.next()); }); }); }); }); </code></pre> <p>@Tim Brown : in my case socket.set alone is not working because it's passing a reference so I end up dealing with the same issue. </p> <p>My workaround is to make a copy of the form object before passing it to socket.set. But as I said I'm not satisfied even thow it's working. Maybe It's the best way tell me what you think in the comments.</p>