没有调用socket.io回调

时间:2013-02-28 17:47:10

标签: node.js 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时,确认是   由你完成,这意味着你也可以传递数据:

我在这里做错了吗?

1 个答案:

答案 0 :(得分:0)

自己想出来。要离开这里,因为这个文档不是很明确。

我使用util.inspect(arguments)查看服务器端的on处理程序中的内容(coffeescript):

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

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