我对这种情况下发生的事情感到困惑
客户:
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');
});
});
这是来自文档。将函数传递给服务器以进行回调有什么意义?服务器如何调用客户端函数?我很困惑。
最佳答案
很明显,您不能直接从服务器调用客户端上的函数。
不过,您可以轻松地间接执行此操作:
- 当客户端发送
ferret
消息时,它会在本地存储给定的函数和 ID。 - 客户端将此 ID 与消息一起发送到服务器。
- 当服务器想要调用客户端函数时,它会将带有 ID 和参数的特殊消息发回给该函数。
- 当客户端收到这个特殊消息时,它可以通过它的 ID 查找函数并调用它。
我不知道这是否正是 Socket.io 所做的,但可以合理地假设它与此类似。
关于javascript - Socket.io 传递回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43562380/