سؤال

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