TP6 SSE通信
TP6
设置响应头
header("Content-type: text/event-stream");
header("Cache-Control: no-cache");
header("Connection: keep-alive");
header("Access-Control-Allow-Origin: *");
模拟查询
$ti = time()+10;
while(true){
if(time() >= $ti){
break;
}
}
返回数据
注:方法末尾是exit();结束,信息用echo返回。
retry:重连的时间
id:浏览器重连时的id
event:js接收时的方法
data:发送的参数
$aa['salt'] = '现在时间已大于'.$ti;
$cc = json_encode($aa);
$data= <<<EOF
retry: 1000\n
id:100000\n
event: onmessage\n
data: $cc\n\n
EOF;
echo $data;
exit();
完整方法
public function index(Request $request)
{
header("Content-type: text/event-stream");
header("Cache-Control: no-cache");
header("Connection: keep-alive");
header("Access-Control-Allow-Origin: *");
$ti = time()+10;
while(true){
if(time() >= $ti){
break;
}
}
$aa['salt'] = '现在时间已大于'.$ti;
$cc = json_encode($aa);
$data= <<<EOF
retry: 1000\n
id:100000\n
event: onmessage\n
data: $cc\n\n
EOF;
echo $data;
exit();
}
JS
let source = new EventSource('http://tp6.a.wjarpg.top/sse?id=19c');
console.log('readyState',source.readyState);
// return;
source.onopen = function(event) {
console.log('onopen', event);
};
source.onmessage = function(event) {
let re = JSON.parse(event.data);
console.log('onmessage', re);
};
source.onerror = function(event) {
console.log('onerror',event);
// source.close();
};