Javascript Socket.io-同时发送用户和消息数据

Javascript Socket.io-同时发送用户和消息数据,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我一直在关注Socket.io的入门页面,并完成了主要任务。但是,现在我正在尝试实现一个新特性,以便它将用户名与消息一起发送回来。虽然这会很好地发回消息,但我不确定如何实现它,因此它也会为用户发回数据。我知道我可以复制下面的代码,并将其编辑为用户特定的内容,但接下来呢 正常发射用户: socket.emit('chat message', $('#u').val()); 然后,在服务器上检索: socket.on('chat message', function(msg){ i

我一直在关注Socket.io的入门页面,并完成了主要任务。但是,现在我正在尝试实现一个新特性,以便它将用户名与消息一起发送回来。虽然这会很好地发回消息,但我不确定如何实现它,因此它也会为用户发回数据。我知道我可以复制下面的代码,并将其编辑为用户特定的内容,但接下来呢

正常发射用户:

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));
  });
socket.on('chat message',函数(msg){
$('#messages').append($('
  • ).text(msg)); });
  • 正如Jonathan所评论的,只需将其作为对象发送即可

    请注意,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对象作为消息,然后在另一端解析响应,如下所示:

    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));
      });
    
    var obj={message:$('#u').val(),用户:“user”};
    emit('chat message',JSON.stringify(obj));
    socket.on('chat message',函数(msg){
    io.emit('chat message',msg);
    });
    socket.on('chat message',函数(msg){
    var message=JSON.parse(msg.message;//$('#u').val()
    var user=JSON.parse(msg.user);/“user”
    $('#messages').append($('
  • ).text(message)); });
  • 将其作为JSON对象发出,然后解析它,也许?