2016-08-04 31 views
1

我正在開發一個遊戲,我的後端是用NodeJS編寫的,我使用socket.io進行實時通信。與socket.io配對 - 依賴setInterval或套接字調用?

我的比賽的特點之一是配對。基本上,如果有兩個以上的玩家在比賽期間進行比賽,我的應用程序將爲他們創建一個遊戲室(特殊socket.io室)並開始遊戲。

有兩種方法可以做到這一點:

  • 上創建一個的NodeJS setInterval的。在區間中,查看playersInMatchmaking數組。如果陣列中有兩名以上的玩家,則創建遊戲室。只要服務器在線,我就會循環。

  • 而不是依靠setInterval的,每次檢查playersInMatchmaking陣列我收到到socket.on("matchmaking start")socket.on("matchmaking stop")

是否有使用某些方法有什麼好處電話嗎? setInterval聽起來更容易,因爲我可以將匹配算法從套接字邏輯中分離出來,但是由於匹配算法會在循環中運行,而不是套接字事件,所以它的性能會降低。

您認爲如何?你有沒有更好的其他想法?

回答

2

您將通過使用事件最大限度地利用socket.io和實時通信。如果沒有其他原因而不是解算算法,則應使用事件。如果當前沒有用戶/玩家參與或搜索匹配,沒有理由反覆運行循環。

如果間隔不夠小(例如5秒),我還會考慮將Player1放入隊列時會發生什麼,Player2也會進入隊列中,並且在2個時間間隔內,Player1會取消搜索對手他厭倦了等待。因此,事件觸發系統的主要優點除了您提到的(性能)以外,沒有實際延遲(網絡,代碼循環,抖動等除外),並且立即發生事件