我在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会以某种方式传输但会转换为对象(?)

是虫子吗?我在这里做错什么了吗?真的很奇怪 ...

更详细一点:我目前正在使用SocketIO 0.9.16

谢谢大家;)

最佳答案

好的,我没有找到通过emit()功能获取回调的任何解决方案。所以我做了一个“技巧”,这是一个并行的解决方案:

当我在服务器端进行emit()涉及callback()的操作时,我将通过一个函数生成一个密钥,并发送数据,并在我的datas对象的末尾添加一个{ callback : key }

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

前面将对此有所了解,它将对此做出响应。服务器将接收所有内容,执行操作并删除侦听器。

就像魅力一样,但是起初有点复杂。如果可以直接与SocketIO一起使用,那会很好。

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

10-05 20:41
查看更多