我正在阅读这篇关于 socket.io 的事件和回调如何工作的有趣的介绍性文章。
我决定先尝试以下方法。
第一次尝试
服务器.js
// client is the socket for the client
client.on('foo' , function(callback){
callback("Hello world");
});
客户端.js
// server is the socket for the server
server.emit('foo', function(msg){
alert(msg);
});
好吧,它只是碰巧它实际上没有工作(服务器抛出一个异常,告诉callback
它不是一个函数)。试图解决这个问题,我发现这个答案解释了如何以正确的方式做到这一点。好吧,那也没用。一些修改,我得到了这个......
第二次尝试
服务器.js
// client is the socket for the client
client.on('foo' , function(name, callback){
callback("Hello world");
});
客户端.js
// server is the socket for the server
server.emit('foo',{},function(msg){
alert(msg);
});
好吧,它工作得很好,但是必须添加“名称”参数和我不使用的空哈希似乎是一个不太好的解决方案。
我试图在非常 不完整的 socket.io 文档中找到对此的解释,但没有找到对这种行为的解释,这就是我在这里问的原因。
我的另一个疑问是是否可以对另一方做同样的事情(即服务器向客户端发送回调,然后在服务器中执行回调),但我还没有尝试过。
TL;DR : 为什么第一次尝试不起作用而第二次起作用?有没有办法避免那个无用的空哈希和name
参数?这两种方式都一样吗?(服务器→客户端和客户端→服务器)。