PHP - 向所有客户端发送异步广播消息

时间:2015-11-14 17:44:11

标签: javascript php jquery

我目前正在创建一个有点像图像板的网站,我的朋友可以发布各种内容。

我希望在PHP(服务器端)和JavaScript / JQuery(客户端)中实现一个功能,以便在发布新内容时向每个正在查看此站点的客户发出警报。

我如何实施这样的广播'功能?我是否必须使用JS打开套接字并检查流以查找我的PHP页面发送的任何数据? (我之前从未使用过JS套接字,但我有一种不好的感觉,我必须为每个客户端打开一个新端口,这会打开我的网站......)

我想知道,您将如何实施此类方法,以及是否有关于此主题的参考文章。

2 个答案:

答案 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:监听公共端口,将所有消息推送到客户端