我目前正在使用Server-sent Events和PHP将信息从php服务器发送到javascript webclient。它确实有效但是当我重新加载页面时,服务器发送所有最后的事件。我想知道它是否可以将它们存储在任何地方以及如何阻止它进行此操作
下面是php代码。我使用dbus来观看按键事件。
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$dbus = new Dbus(DBus::BUS_SYSTEM);
$dbus->addWatch("nl.pcdata.display", "displayKey");
do {
$signal = $dbus->waitLoop(100);
if($signal instanceof DbusSignal){
if($signal->matches("nl.pcdata.display","displayKey")){
$data = $signal->getData()->getData();
echo "data:Address:{$data[0]};Button:{$data[1]}.\n\nretry: 100\n\n";
flush();
break;
}
else{
echo "data:Geen data\n\n";
flush();
}
}
}while(true);
?>
javascript中的代码。
var source = new EventSource("textinput.php");
source.onmessage = function(event){
console.log(typeof event.data);
var result = event.data.split(";");
console.log(result);
document.getElementById("items").innerHTML += "<li>" + event.data + "</li>";
};
所以代码完成了它应该做的事情。例如,当我按下okay按钮时,服务器会将其发送到web客户端。
看起来像这样
控制台输出:
当我重新加载页面时,它再次输出。我需要的是当我重新加载页面时,它只显示从那一点开始按下的键。