gpt4 book ai didi

node.js - 与 socket.io 的匹配 - 依赖 setInterval 或套接字调用?

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:33 25 4
gpt4 key购买 nike

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

我的游戏的特色之一是配对。基本上,如果超过两个玩家在配对期间,我的应用程序将为他们创建一个游戏室(特殊的socket.io房间)并开始游戏。

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

  • 在 NodeJS 上创建 setInterval。在区间内,检查playersInMatchmaking数组。如果阵列中有超过 2 名玩家,则创建游戏室。只要服务器在线我就会循环。

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

使用某种方法有什么好处吗? setInterval 听起来更容易,因为我可以将匹配算法与套接字逻辑分离,但是它的性能会较差,因为匹配算法将在循环中运行,而不是套接字事件。

你觉得怎么样?您还有其他更有效的想法吗?

最佳答案

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

如果间隔不够小(例如5秒),我还会考虑当Player1被放入队列,Player2也进入队列时会发生什么,并且在2个间隔之间,Player1因为厌倦了等待而取消了对对手的搜索。因此,除了您提到的(性能)之外,事件触发系统的主要好处是没有真正的延迟(网络、代码循环、抖动除外,..)并且事情立即发生

关于node.js - 与 socket.io 的匹配 - 依赖 setInterval 或套接字调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38764972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com