Question

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?

Was it helpful?

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);

OTHER TIPS

With the lightning fast aid of Explosion pills the problem got solved.

instead of...

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

it should be

socket.on('something', function(who){
    socket.nick = who.x;
    //something
});
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top