[英]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.