流套接字和服务器发送事件



再次,我正在使用stream_socket和客户端服务器发送的事件在某个实时系统上工作...因为我不是亲,也不够聪明,无法自己解决案件。

这是我使用 UDP 从一台服务器获取更新的事情。并希望通过服务器发送的事件或其他不使用 API 或库向用户生动地显示数据。.

PHP代码

<?php
$socket = stream_socket_server("udp://127.0.0.1:7755", $errno, $errstr,STREAM_SERVER_BIND);
if (!$socket) {
die ( "$errstr ($errno)<br />n");
} 
while (true) {
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$got= stream_socket_recvfrom($socket, 1500);// just say im getting time update every 1 second from the sender
echo $got;
flush();
}

?>

JS部分

var source = new EventSource("receive.php");
source.onmessage = function(event) {
document.getElementById("result").innerHTML + =event.data + "<br>";
 };

了解到 php 在完全执行之前不会回显。 我将尝试更多选项来保持连接打开,而不是再次请求文件。 目前,这仍然完美地工作,但丢失的数据包很少,但可以工作。

.PHP

<?php
$sock=stream_socket_server("udp://127.0.0.1:7755",$errno,$errstr,STREAM_SERVER_BIND);
if (!$sock) { 
 die("$errstr ($errno)"); 
} 
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$d=stream_socket_recvfrom($sock, 1500); 
echo "data: {$d}nn";
flush();
?>

.JS

var source = new EventSource("receive.php");
 source.onmessage = function(event) {
 document.getElementById("result").innerHTML + =event.data + "<br>";
};

最新更新