从客户端到服务器的SocketIO回调不起作用(而不是null对象)

时间:2014-09-04 23:27:55

标签: javascript node.js express socket.io

我在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

谢谢大家;)

1 个答案:

答案 0 :(得分:0)

好的,我没有找到通过emit()功能获得回调的任何解决方案。所以我做了一个&#34;技巧&#34;这是一个并行的工作解决方案:

当我emit()在服务器端涉及callback()的内容时,我通过函数生成密钥并发送数据,在我的数据末尾添加{ callback : key }对象

我还会生成一个socket.on(key, function(datas) { callback(datas); socket.removeListener(key); },它最后会相当于系统中的经典回调。

前面将会理解这一点emit(key, datas...)作为回应。服务器将接收所有内容,执行操作并删除侦听器。

起初就像魅力一样,但有点复杂。如果直接使用 SocketIO ...

,会不会很好

如果有人卡住了,我希望这会有所帮助:)