【问题标题】:broadcast messages to other sockets?向其他套接字广播消息?
【发布时间】:2018-02-03 12:51:07
【问题描述】:

我正在尝试使用 nodejs socket.io 制作聊天应用程序

在阅读 socket.io 文档时,

这使得向其他套接字广播消息变得容易:

io.on('connection', function(socket){
  socket.on('say to someone', function(id, msg){
    socket.broadcast.to(id).emit('my message', msg);
  });
});

我可以理解“对某人说”是一个事件,第二个参数是一个事件处理函数。

但我不能完全理解的是,我认为当客户端发出事件时,它会发送带有该事件的对象。

//client-side
socket.emit('some event', {id: "some_id", msg: "some_msg"})

//server-side
socket.on('some event', function(data){
  socket.broadcast.to(data.id).emit('my message', data.msg);
});

但是正如您在上面的文档中看到的代码,

它接收两个参数,id 和 msg。

这怎么可能?

我们将不胜感激。

【问题讨论】:

    标签: node.js express socket.io


    【解决方案1】:

    查看say to someone事件回调中的函数参数:

    io.on('connection', function(socket){
      socket.on('say to someone', function(id, msg){
        socket.broadcast.to(id).emit('my message', msg);
      });
    });
    

    注意它们如何与客户端为事件传递的对象属性对齐?

    (id -> id, 味精 -> 味精)

    //client-side
    socket.emit('some event', {id: "some_id", msg: "some_msg"})
    

    对象正在被解构,它的属性作为参数传递给回调函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-09
      • 2012-06-23
      • 1970-01-01
      相关资源
      最近更新 更多