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

时间:2016-05-31 14:05:58

标签: javascript php html multiplayer

我正在尝试将所有用户同时重定向到游戏页面,但我没有成功。我该如何同步它们?

我尝试过使用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>

1 个答案:

答案 0 :(得分:0)

您的客户端javascript代码应该监听用户定义的“开始游戏”事件:

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连接的Web服务器(这是EventSource在等待新事件时所做的事情)。如果您使用传统的HTTP服务器(如Apache),那么处理您的HTTP请求的线程池将很快被填满,如果您不将连接到服务器的并发播放器数量限制为只有少数几个。

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