+
95
-

浏览器请求EventSource 后终止关闭请求后端如何检测?

浏览器请求EventSource 后终止关闭请求后端如何检测?


网友回复

+
15
-

eventSource调用close关闭后会触发服务端的连接关闭事件,我们以swoole为例来看看:

<?php

use Swoole\Http\Request;
use Swoole\Http\Response;

// 设置响应头
function setHeader(Response $response) {
    $response->header('Content-Type', 'text/event-stream');
    $response->header('Cache-Control', 'no-cache');
    $response->header('Connection', 'keep-alive');
}

// 发送事件
function sendEvent(Response $response, $event, $data) {
    $response->write("event:$event\n");
    $response->write("data:$data\n\n");
}


// 用于存储定时器ID的数组
$timerIds = [];

// 创建HTTP服务器
$server = new Swoole\Http\Server('0.0.0.0', 9502);

// 处理请求
$server->on('request', function(Request $request, Response $response) use(&$timerIds) {
    if ($request->server['request_uri'] == '/html') {
        /...

点击查看剩余70%

我知道答案,我要回答