与socket.io配对 – 依靠setInterval或套接字调用?

我正在开发一个游戏,我的后端是用NodeJS编写的,而我使用socket.io来进行实时通信。

我的比赛的特点之一是配对。 基本上,如果有两个以上的玩家在比赛期间,我的应用程序将为他们创build一个游戏室(特殊socket.io室)并开始游戏。

有两种方法可以做到这一点:

  • 在NodeJS上创build一个setInterval。 在间隔中,检查playersInMatchmaking数组。 如果arrays中有两名以上的玩家,则创build游戏室。 只要服务器在线,我就会循环。

  • 每次我接到socket.on("matchmaking start")socket.on("matchmaking stop")的调用时,不要依赖setInterval,而要检查playersInMatchmaking数组

使用某种方法有什么好处吗? setInterval听起来更容易,因为我可以将匹配algorithm从套接字逻辑中分离出来,然而,由于匹配algorithm会在循环中运行,而不是套接字事件,所以性能会降低。

你怎么看? 你有任何其他的想法会更好吗?

您将通过使用事件最大限度地利用socket.io和实时通信。 如果除了algorithm解耦之外没有别的原因,则应该使用事件。 如果当前没有用户/玩家参与或search匹配,则没有理由一遍又一遍地运行循环。

如果时间间隔不够小(例如5秒),我还会考虑当Player1进入队列时发生的情况,Player2也进入队列,并且在两个时间间隔之内,由于玩家厌倦了等待,他取消了对手的search。 因此事件触发系统除了你所提到的(性能)之外的主要好处是没有真正的延迟(除了networking,代码循环,抖动等),并且事情立即发生

Interesting Posts