2015-11-14 85 views
1

我目前正在創建一個有點像圖像板的網站,我的朋友可以發佈各種內容。PHP - 向所有客戶端發送異步廣播消息

我想在PHP(serverside)和JavaScript/JQuery(clientside)中實現一個函數,以便在發佈新內容時提醒每個正在查看此站點的客戶端。

如何實現這種'廣播'功能?我是否必須使用JS打開一個套接字並檢查數據流,以查看我的PHP頁面發送的數據?
(我從來沒有使用的插座與JS之前,但我有不好的感覺,我必須打開每一個客戶端,它openes我的網站一個新的端口...)


我會想知道,你將如何實施這樣的方法,如果你有一些關於這個問題的參考文章。

回答

1

HTML 5 SSE將是我想的方式。這將使JavaScript偵聽來自服務器的消息。您可以選擇回退到長輪詢。此頁面可能會有所幫助HTML5ROCKS

JS

var source = new EventSource("demo_sse.php"); 
source.onmessage = function(event) { 
    document.getElementById("result").innerHTML += event.data + "<br>"; 
}; 

if(typeof(EventSource) === "undefined") { 
    // NO SSE Support - Fall back to long-polling 
} 

PHP(demo_sse.php)

<?php 
header('Content-Type: text/event-stream'); 
header('Cache-Control: no-cache'); 

$time = date('r'); 
echo "data: The server time is: {$time}\n\n"; 
flush(); 
?> 
1

Bacsicaly,PHP & JavaScript不能做到這一點。

可以使用結合的NodeJS用PHP做推送通知客戶

這裏是在github源代碼,例如:https://github.com/jeffasinger/simple-push

在PHP文件夾:

  • listen.html是客戶端連接到服務器端口8000並從服務器收聽消息

  • trigger.php接收消息要推送給所有客戶端,收到消息後,做出捲曲/通知端口3000

在節點文件夾:

  • Node.js的聽雙端口

  • 3000:監聽本地端口,接收消息要推送給所有客戶端

  • 8000:偵聽公共端口,將所有消息推送到客戶端

+0

你可以絕對用PHP和Javascript做到這一點。 –

相關問題