Javascript Socket.io传递回调函数
我对这种情况下发生的事情感到困惑 客户端:Javascript Socket.io传递回调函数,javascript,socket.io,Javascript,Socket.io,我对这种情况下发生的事情感到困惑 客户端: socket.emit('ferret', 'tobi', function (data) { console.log(data); // data will be 'woot' }); io.on('connection', function (socket) { socket.on('ferret', function (name, fn) { fn('woot'); }); }); 服务器: socket
socket.emit('ferret', 'tobi', function (data) {
console.log(data); // data will be 'woot'
});
io.on('connection', function (socket) {
socket.on('ferret', function (name, fn) {
fn('woot');
});
});
服务器:
socket.emit('ferret', 'tobi', function (data) {
console.log(data); // data will be 'woot'
});
io.on('connection', function (socket) {
socket.on('ferret', function (name, fn) {
fn('woot');
});
});
这是文件上的。将函数传递给服务器进行回调有什么意义?服务器如何调用客户端函数?我很困惑。emit方法的第三个参数接受一个回调,该回调将被传递到服务器,以便您可以调用任何您想要的数据作为确认。它实际上非常方便,并且省去了配对呼叫响应事件的工作量 确认是获取与已发送消息对应的响应的方式。以下是服务器端的代码片段
io.sockets.on('connection', function(socket) {
socket.on('echo', function(data, callback) {
callback(data);
});
});
很明显,您不能直接从服务器调用客户机上的函数 不过,您可以轻松地间接执行此操作:
ferret
消息时,它将给定的函数以ID本地存储编辑:查看源代码(和),这看起来确实与Socket.io的功能非常相似。为什么要回答“我不知道这是否正是Socket.io的功能…”@aarosil,因为我非常确定这与Socket.io的功能非常接近,如果不是的话。此外,我对这个问题的解释更多的是“这怎么可能”,而不是“Socket.io到底是如何做到的”。@Frxstrem不幸的是,您链接到了主分支上的行,而那些特定的行号不再是指适当的代码了…@swrobel谢谢,在我写这个答案时,我已经更新了引用特定提交的链接。