Javascript 服务器使用PHP发送事件
我似乎找不到任何服务器发送事件的好例子 我的目标是向两个单独的div发送两条消息,但我是javascript新手,所以我不知道如何解析这两条消息,有人能告诉我正确的方向吗 如果有人能向我解释SSE是如何工作的,我可以运行这个php脚本Javascript 服务器使用PHP发送事件,javascript,php,Javascript,Php,我似乎找不到任何服务器发送事件的好例子 我的目标是向两个单独的div发送两条消息,但我是javascript新手,所以我不知道如何解析这两条消息,有人能告诉我正确的方向吗 如果有人能向我解释SSE是如何工作的,我可以运行这个php脚本send.php,将更新推送到网页上,或者javascript运行脚本本身吗 以下是我的PHP代码: <?php header('Content-Type: text/event-stream'); header('Cache-Control: no-cach
send.php
,将更新推送到网页上,或者javascript运行脚本本身吗
以下是我的PHP代码:
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$message = $row['message'];
$user = $row['user'];
echo "{$message}\n\n";
echo "{$user}\n\n";
flush();
?>
这是我的HTML/Javascript:
<div id="result"></div>
<script>
if(typeof(EventSource)!=="undefined")
{
var source=new EventSource("send.php");
source.onmessage=function(event)
{
document.getElementById("result").innerHTML+=event.data + "<br>";
};
}
else
{
document.getElementById("result").innerHTML="Sorry, your browser does not support server-sent events...";
}
</script>
if(typeof(EventSource)!=“未定义”)
{
var source=neweventsource(“send.php”);
source.onmessage=函数(事件)
{
document.getElementById(“结果”).innerHTML+=event.data+“
”;
};
}
其他的
{
document.getElementById(“结果”).innerHTML=“对不起,您的浏览器不支持服务器发送的事件…”;
}
您只需将事件以JSON编码字符串的形式发送回服务器,并指示哪个div应该获得什么消息
$arr = array(
'user' => $row['user'],
'message' => $row['message']
)
echo json_encode($arr);
然后,解析来自服务器的JSON响应并对其执行逻辑。假设这两个div的ID分别为user
和message
source.onmessage=function(event){
var $data = JSON.parse(event.data);
for(key in obj){
if (obj.hasOwnProperty(key)) { //ensure that we're not up in the prototype chain
document.getElementById(key).innerHTML = $data[key];
}
}
}
这里的关系当然是
键
将是用户
或消息
。我们还希望有两个div,id=“user”
和id=“message”
,我们可以为它们修改innerHTML。这不是一个要求,但有助于简化流程。因此,这应该可以在不刷新浏览器的情况下工作,我可以从服务器(PHP中的管理面板)运行它要将消息推送到已打开的浏览器?如果您以这种方式构建脚本,则该脚本中存在的任何数据都将动态创建。我将此标记为解决方案,因为它似乎拥有我需要的一切。但是你能在我的例子中告诉我应该如何使用$row['message']和$row['user']进行更新,如果这对你来说不是什么问题的话。请看我上面给你看的就是你所需要的。删除您的echo
语句,用我的$arr=array(
构造函数)替换它,然后添加echo json\u encode($arr)
就完成了。我如何运行此javascript函数来加载php文件并显示值?换句话说,是什么触发服务器上导致发送消息的事件?