簡體   English   中英

如何同時使用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代碼應偵聽用戶定義的“開始游戲”事件:

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秒刷新間隔的輪詢機制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM