我目前正在创建一个有点像图像板的网站,我的朋友可以发布各种内容。
我希望在PHP(服务器端)和JavaScript / JQuery(客户端)中实现一个功能,以便在发布新内容时向每个正在查看此站点的客户发出警报。
我如何实施这样的广播'功能?我是否必须使用JS打开套接字并检查流以查找我的PHP页面发送的任何数据? (我之前从未使用过JS套接字,但我有一种不好的感觉,我必须为每个客户端打开一个新端口,这会打开我的网站......)
我想知道,您将如何实施此类方法,以及是否有关于此主题的参考文章。
答案 0 :(得分: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 :(得分:1)
Bacsicaly,PHP&amp; Javascript无法做到这一点。
您可以使用NodeJS与PHP结合来向客户端执行推送通知
这是github上的源代码示例:https://github.com/jeffasinger/simple-push
在php文件夹中:
listen.html是客户端连接到服务器端口8000并从服务器侦听消息
trigger.php收到想要推送到所有客户端的消息,收到消息后,将CURL设为/ notify port 3000
在节点文件夹中:
Node.js侦听两个端口
3000:监听本地端口,接收想要推送到所有客户端的消息
8000:监听公共端口,将所有消息推送到客户端