Search code examples
javascriptnode.jssocket.iofunction-parameter

Socket.io: How to handle function parameters properly?


I'm trying to set socket parameter (nick) as follows

socket.on('something', function(who){
    socket.nick = who;
    //something
});

Following code returns undefined to the client, which is the issue here.

But when i do it like...

socket.on('something', function(who){
    socket.nick = 'who';
    //something
});

This returns 'who' to everyone, ofc.

Is there a way to get the upper code snippet working?


Solution

  • Sockets can't communicate JavaScript objects or anything that can't be stringified simply. If who is an object as in {x: "monkey"}, you probably want to use who.x instead, which is a string:

    socket.nick = who.x;
    

    You could also stringify the object to JSON and then parse it on the client:

    socket.nickJson = JSON.stringify(who);