我在SocketIO面临一个奇怪的问题,在服务器端我发出()这个:
$s.sockets.emit(scope, {some: datas},
function(feedback) {
console.log('received callback');
}
);
在客户端,我这样做:
this.Socket.on(handler, function (datas, callback) {
callback('test');
}
我正在等待客户端发送服务器将收到的callback('test')
。然后它会输出一个简单的console.log('received callback')
客户端有效地接收服务器请求,但在客户端,回调类型为null
(对象)而不是function
...如果我删除服务器上的function()
并且不要等待回调,客户端的类型将是undefined
,这意味着当服务器期望回调时,function
以某种方式传输但在对象中转换(?)< / p>
这是一个错误吗?我在这里做错了吗?真的很奇怪......
还有一个细节:我目前正在使用 SocketIO 0.9.16
谢谢大家;)
答案 0 :(得分:0)
好的,我没有找到通过emit()
功能获得回调的任何解决方案。所以我做了一个&#34;技巧&#34;这是一个并行的工作解决方案:
当我emit()
在服务器端涉及callback()
的内容时,我通过函数生成密钥并发送数据,在我的数据末尾添加{ callback : key }
对象
我还会生成一个socket.on(key, function(datas) { callback(datas); socket.removeListener(key); }
,它最后会相当于系统中的经典回调。
前面将会理解这一点emit(key, datas...)
作为回应。服务器将接收所有内容,执行操作并删除侦听器。
起初就像魅力一样,但有点复杂。如果直接使用 SocketIO ...
,会不会很好如果有人卡住了,我希望这会有所帮助:)