2015-11-14 86 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做到这一点。 –

相关问题