2016-04-03 143 views
0

使用事件機器和Ruby。目前我正在做一個遊戲,在輪到它結束時它檢查是否有其他用戶在那裏。當使用ws.send()向用戶發送數據時,我如何檢查用戶是否真的獲得了數據或者是替代解決方案?Ruby websocket檢查用戶是否存在

+0

通常情況下,您需要重新檢查套接字以檢查遠程是否處於活動狀態且未卡住。 – tadman

+0

ping是否有回調來檢查是否發生響應。如真假? – ninetailschris

回答

2

由於該庫不提供對底層協議元素的訪問,因此您需要將元素添加到應用程序協議中才能執行此操作。一種典型的方法是爲每個消息添加一個標識符,並對帶有包含這些標識符的確認消息的消息作出響應。

請注意,這種方法只會幫助您更好地瞭解客戶收到的內容。在出現錯誤的情況下,不保證特定的狀態。一個例子是在客戶端發送ACK之後丟失連接,但該服務沒有收到它。

由於我剛纔提到的複雜性,試圖使大多數操作是冪等的 - 這可以在不損害系統的情況下重播並且在錯誤條件期間/之後容易重播通常更容易。您還可以找到一種方法來週期性地同步相關狀態,以避免因數據/連接丟失而導致的輕微錯誤的長期延續。

+0

豎起大拇指。我找到了我的問題的答案,我使用socket.state來確定套接字是關閉還是打開,並根據該響應進行操作。 – ninetailschris