2013-02-28 75 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

相關問題