Pergunta

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?

Foi útil?

Solução

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

Outras dicas

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
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top