您尝试实现的此类事情将使用常规 Ajax 调用消耗服务器的大量资源。
类似问题:Link https://stackoverflow.com/questions/9593558/multiplayer-php-game-socket-programming
让我们以两个用户之间的聊天为例:
用户的 1 页面有一个 Javascript 计时器,每秒询问新消息:“嘿服务器,给我发送新消息。”无论有没有新消息,服务器都会处理请求,搜索新消息进行回复“我现在没有消息给你” or “这是您的新消息”。
对于用户 2 来说也是如此。
如果两个用户都保持聊天页面打开 10 秒,您的服务器将收到 20 个新消息请求,将运行 20 次新消息搜索,并发送 20 个包含新消息的回复或“无新消息”回复。即使两个用户都没有发送任何内容,只需保持页面打开即可。想象一下,如果有 1000 个用户连接到您的聊天室!
在这种情况下,最好的方法是 Socket。在同一个聊天示例中,用户 1 和用户 2 将继续监听新消息,而不是每秒询问新消息。当用户1发送消息时,服务器会通知用户2“我有一条新消息给你,这里是”。
如果连接1000个用户,完全没有问题。服务器将新消息发送到套接字通道,所有连接的用户都会收到通知。没有延迟。
在您的具体情况下,将像这样工作:玩家 1 和玩家 2 正在监听新消息。当玩家1点击卡片时,将触发服务器命令。服务器将接收并发送套接字通道的消息:“嘿,每个正在等待新卡的人,这里是”,然后每个玩家都会收到通知。即刻。
第一个场景的另一个问题是使用 JavaScript 计时器:如果增加计时器间隔,回复将延迟传送。
套接字的另一个好处是:它独立于技术。 PHP、Java、节点等
将 WebSocket 与 Php 结合使用的 GitHub 项目:Link https://github.com/krazyjakee/Mystalia-Engine
你可以在这里看到一些套接字演示 https://socket.io/demos/chat/
这是一个存储库,其中包含我之前尝试 Socket 时运行的一些测试 https://bitbucket.org/moreirapontocom/sockets