Socket.io – 发送用户和消息数据

我一直在关注Socket.io上的Getting Started页面,并完成了主要任务。 但是,现在我试图实现一个新的function,所以它发送的用户名称与消息。 虽然这个消息发回的罚款,我不知道如何实现它,所以它也发回给用户的数据。 我明白我可以复制下面的代码,并将其编辑到用户特定的东西,但那又如何?

正常情况下发送用户:

socket.emit('chat message', $('#u').val()); 

然后,在服务器上检索:

  socket.on('chat message', function(msg){ io.emit('chat message', msg); }); 

然后,在页面上显示该信息:

 socket.on('chat message', function(msg){ $('#messages').append($('<li class="mesg">').text(msg)); }); 

正如乔纳森评论说的,只是把它作为一个对象发送。

请注意,socketio自动序列化/反序列化,所以你不需要额外的JSON.stringify步骤。

下面是我现在使用的游戏代码中的一个例子:

 //client.js io.emit('waypoint', { x: players.me.targetX, y: players.me.targetY }); //server.js socket.on('waypoint', function (msg) { console.log(msg.x, msg.y); }); 

所以在你的情况下,这样的事情,

 //client.js io.emit('chat message', { msg: $('#u').val(), userColor: 'green', moreData:{ isAwesome:true, favoritePie:'apple'} }); 

我不完全相信我已经正确地理解了你的问题,但是我认为你所需要做的就是发出一个JSON对象作为你的消息,然后parsing另一边的响应,如下所示:

 var obj = {message: $('#u').val(), user: "User"}; socket.emit('chat message', JSON.stringify(obj)); socket.on('chat message', function(msg){ io.emit('chat message', msg); }); socket.on('chat message', function(msg){ var message = JSON.parse(msg).message; //$('#u').val() var user = JSON.parse(msg).user; //"User" $('#messages').append($('<li class="mesg">').text(message)); });