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?

有帮助吗?

解决方案

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

其他提示

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
});
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top