2013-02-28 73 views
0

做一些socket.io工作。似乎我的排放回调没有被解雇。我做对了吗?socket.io回调没有被调用

this.logger.debug("joining room " + roomId);  
callback = function() { 
    return this.logger.debug('finished emitting join for socket'); 
}; 
// this.config.ioTypes.join resolves to "j" 
this.socket.emit(this.config.ioTypes.join, { 
    user: this.config.user, 
    room: roomId 
}, callback); 

我的日志看起来是正确的(请注意,上面的代码不包括会产生这些日志一切):

DEBUG: joining room 1245 <-- first line from code above 
DEBUG: join event for socket etQIXGAm59DYkCPk1_gj 
DEBUG: data: { user: 1, room: '1245' }    
DEBUG: received join event for 1, data: { user: 1, room: '1245' } 

这就是结束。它看起来像socket.io不调用我的回调。但是文档非常清晰:

有时,您可能想要在客户端确认 消息接收时收到回调。

要做到这一点,只需传递一个函数作为最后一个参数.send.emit。更重要的是,当您使用.emit,确认是由 你做了,这意味着你也可以通过沿数据:

我在这里干什么什么了吗?

回答

0

自己想出来。要在这里留下,因为这个文件不是很清楚。

我用util.inspect(arguments)看看什么是未来在我on处理程序在服务器端(CoffeeScript的):

@logger.debug "onJoin args: " + util.inspect(arguments) 

这就造成:... '2': [Function: ack]看起来像我所需要的。所以我将其添加到on处理程序的签名中。然后我将callback() if callback?添加到处理程序的末尾。目前看起来不错。

+0

您能详细说明吗?,我看到相同的问题,但在这里看不到解决方案。 – dacopenhagen 2013-04-25 19:26:49

+0

从2个月前?看起来像我不得不在我的处理程序中手动调用回调。 – jcollum 2013-04-25 19:44:23

+0

啊,我可能会遇到一个不同的问题 - 我一直在挖掘,发现我的socket.io回调函数没有被调用,如果我在Heroku上运行多个服务器的话。 – dacopenhagen 2013-04-25 20:28:22

相关问题