如何使用 Socket.io 在一条消息中发送两个变量?

Posted

技术标签:

【中文标题】如何使用 Socket.io 在一条消息中发送两个变量?【英文标题】:How to send two variables in one message using Socket.io? 【发布时间】:2014-01-05 02:40:53 【问题描述】:

我有一个客户端 ID 和用户名,我希望它们都通过套接字发送。

 client.userid = userid;
 client.username = username;
 client.emit('onconnected',  id: client.userid, name: client.username );

我试过这个,但它似乎不起作用

【问题讨论】:

【参考方案1】:

你可以试试这个

io.sockets.on('connection', function (socket) 
  socket.on('event_name', function(data) 
      // you can try one of these three options

      // this is used to send to all connecting sockets
      io.sockets.emit('eventToClient',  id: userid, name: username );
      // this is used to send to all connecting sockets except the sending one
      socket.broadcast.emit('eventToClient', id: userid, name: username );
      // this is used to the sending one
      socket.emit('eventToClient', id: userid, name: username );
  

在客户端

 socket.on('eventToClient',function(data) 
    // do something with data
       var id = data.id
       var name = data.name // here, it should be data.name instead of data.username

 );

【讨论】:

【参考方案2】:

尝试将对象作为一个整体发送:

$('form').submit(function()      
var loginDetails=  
    userid : userid,  
    username : username  
    ;  
client.emit('sentMsg',loginDetails);  

【讨论】:

【参考方案3】:

您应该将一个对象传递给套接字事件。

在服务器端:

socket.emit('your-event',  name: 'Whatever', age: 18 )

在客户端:

socket.on('your-event', ( name, age ) => 
    // name: Whatever
    // age: 18
)

【讨论】:

以上是关于如何使用 Socket.io 在一条消息中发送两个变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何在一条消息中发送多个嵌入?

使用 mern 堆栈和 socket.io 的聊天应用程序在发送超过 20 条消息后变慢

Socket.IO 在两个用户之间发送消息的最佳方式? [关闭]

使用 socket.io 技术实现消息实时推送

如何使用nodejs socket.io向特定房间中的用户发送打字警报和消息

聊天应用 - Socket.io - 我如何向其他用户显示消息?