2017-05-31 44 views
0

我試圖建立基於房間管理(大廳,婚介,房間等)的應用程序(爲了我的個人項目更精確的一個庫)。Socket.IO確認與事件發出

我設法用socket.io來做到這一點。

現在,我的問題是,我不知道應該使用什麼樣的設計模式。

我注意到socket.io有ack回調,這讓我感到驚訝,並認爲它很好,但我不確定發送回ack參數或發送帶參數的事件有什麼區別。

所以,問題是,利用ack發射一個事件有什麼優缺點,反之亦然?

比方說,使用下面的代碼有什麼優點和缺點:

假設處理程序回調是fn(err, res);

確認風格:

socket.on('join', function (data, ack) { 
    // do the joining stuff here. 
    return ack(null, { response: 'goes_here' }); 
}); 

事件發射風格:

socket.on('join', function (data, ack) { 
    // do the joining stuff here. 
    io.to(client_sid).emit('join_response', null, { response: 'goes_here' }); 
}); 

回答

1

正如你所指出的,如果你只是想到乒乓球的事情,那就沒有真正的區別。我會引人注意的變化是,它允許你驗證一個特定的事件已被確認(雖然你可以爭辯說,你也可以通過傳遞一個事件ID來實現這個事件),並且提供了一個更方便的方式來處理響應,通過使用簡單的回調風格表示法:第一個示例看起來更乾淨簡單。

此外,它允許您避免創建兩個事件鍵只是一種類型的事件有點重複。已經爲此目的致謝,所以沒有真正的理由不使用它或創建另一個事件。

+0

謝謝!我只是想知道ack響應是否具有「不同的含義」,但如果它工作正常,那麼一切都很好,這就是我想知道的一切。 – Nika