向其他套接字广播消息?

时间:2018-02-02 19:21:46

标签: node.js express socket.io

我正在尝试使用nodejs socket.io

进行聊天应用

在阅读socket.io doc时,

  

这样可以轻松地将消息广播到其他套接字:

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

我能理解,对某人说'#39;是一个事件,第二个参数是一个事件处理函数。

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

//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);
});

但是你可以看到上面doc中的代码,

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

怎么可能呢?

一些解释真的很值得赞赏。

1 个答案:

答案 0 :(得分: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,msg - > msg)

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

正在对对象进行解构,并将其属性作为参数传递给回调函数。