Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PHP-向所有客户端发送异步广播消息_Javascript_Php_Jquery - Fatal编程技术网

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

Javascript PHP-向所有客户端发送异步广播消息,javascript,php,jquery,Javascript,Php,Jquery,我目前正在创建一个网站,它有点像一个图像板,我的朋友可以在上面发布各种内容 我想在PHP(服务器端)和JavaScript/JQuery(客户端)中实现一个函数,在发布新内容时提醒当前正在查看此站点的每个客户端 我如何实现这种“广播”功能?我是否必须用JS打开一个套接字并检查我的PHP页面发送的任何数据流? (我以前从未在JS中使用过套接字,但我有一种不好的感觉,我必须为每个客户端打开一个新端口,这将打开我的网站…) 我想知道,您将如何实现这样一种方法,以及您是否有关于这个主题的参考文章。我认

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

我想在PHP(服务器端)和JavaScript/JQuery(客户端)中实现一个函数,在发布新内容时提醒当前正在查看此站点的每个客户端

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


我想知道,您将如何实现这样一种方法,以及您是否有关于这个主题的参考文章。

我认为这是一条可行之路。这将使javascript监听来自服务器的消息。您可以选择退回到长轮询。这一页可能会有帮助

JS

var source=neweventsource(“demo_sse.php”);
source.onmessage=函数(事件){
document.getElementById(“结果”).innerHTML+=event.data+“
”; }; if(typeof(EventSource)=“未定义”){ //无SSE支持-退回到长轮询 }
PHP(demo_sse.PHP)



基本上,PHP和Javascript不能做到这一点

您可以将NodeJS与PHP结合使用,向客户端发送推送通知

下面是github上的源代码示例:

在php文件夹中:

  • html是一个连接到服务器端口8000并侦听来自服务器的消息的客户端

  • php接收到要推送到所有客户端的消息,收到消息后,对端口3000进行CURL/notify

在节点文件夹中:

  • Node.js侦听两个端口

  • 3000:侦听本地端口,接收要推送到所有客户端的消息

  • 8000:侦听公共端口,将所有消息推送到客户端

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
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

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