В настоящее время я работаю с отправленными сервером событиями и PHP для отправки информации с php-сервера на веб-клиент javascript. Это работает, однако, когда я перезагружаю страницу, сервер отправляет все последние события. Интересно, хранит ли он их где-нибудь и как я могу помешать этому
Ниже приведен код 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>";
};
Так что код делает то, что должен делать. например, когда я нажимаю кнопку «ОК», сервер отправляет это веб-клиенту.
Это выглядит так
Консольный вывод:
Когда я перезагружаю страницу, она выводит это снова. Что мне нужно, так это когда я перезагружаю страницу, на которой просто отображаются клавиши, нажимаемые с этого момента.
Задача ещё не решена.
Других решений пока нет …