如何同时为所有客户端启动 PHP 中的多人网页游戏?

How to launch a multiplayer web game in PHP for all clients at the same time?

我试图同时将所有用户重定向到游戏页面,但我没有成功。我怎样才能同步它们?

我已经尝试使用 JAVASCRIPT 中的 eventSource,但仍然无法将它们全部放入游戏中。一次只能重定向一个。是否有任何功能、框架或其他东西可用于同时重定向所有玩家?

<script>
if(typeof(EventSource) !== "undefined") {
var source = new EventSource("demo_sse.php");
source.onmessage = function(event) {
document.getElementById("result").innerHTML +=  " <?php startGame(); ?             >";
}
} else {
document.getElementById("result").innerHTML = "Sorry, your browser does not  support server-sent events...";
}
</script>

您的客户端 javascript 代码应该侦听您的用户定义的 "start the game" 事件:

if (typeof(EventSource) !== "undefined") {
  var source = new EventSource("demo_sse.php");

  source.addEventListener("startgame", function(e) {
    // Start the game
    // e.g. document.location.href = '...';
  }, false);

} else {
  document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events...";
}

您的服务器 demo_sse.php 需要回复

event: startgame\n
data: ...\n\n

备注:您需要一个网络服务器,它可以处理长时间保持打开状态的 HTTP 连接(这是 EventSource 在等待新事件时所做的)。如果您使用传统的 HTTP 服务器,例如 Apache,如果您不将连接到您的服务器的并发玩家数量限制在少数几个,处理您的 HTTP 请求的线程池将很快被填满。

如果您的服务器端 PHP 脚本在发送回复后关闭连接,默认情况下客户端将在 5 秒超时后重新连接。如果您的 PHP 脚本总是关闭连接,您的 EventSource 将降级为具有 5 秒刷新间隔的轮询机制。