我正在尝试使用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。
怎么可能呢?
一些解释真的很值得赞赏。
答案 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"})
正在对对象进行解构,并将其属性作为参数传递给回调函数。