在页面上显示接收数据的套接字服务器


Socket server displaying received data on the page

我需要一个侦听连接并输出接收数据的脚本。我尝试了以下代码:

header('Content-Type: text/plain; charset=utf-8');
$socket = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr);
if (!$socket) {
    echo "$errstr ($errno)'n";
} else {
    while ($conn = stream_socket_accept($socket)) {
        $data = fread($conn, 100);
        var_dump($data);
        flush();
        fclose($conn);
    }
    fclose($socket);
}

基于此示例: php.net/manual/en/function.stream-socket-server.php

问题是当客户端连接并发送一些数据时,页面上不会显示任何内容。使用缓冲保护技术,如ob_implicit_flush(),甚至在php中设置output_buffering = Off.ini都无济于事。浏览器中的缓冲可能会导致这种情况,还有什么我应该尝试的吗?

正如我所想的,这是由于Chrome浏览器仅在连接关闭时显示输出。不幸的是,似乎没有简单的方法可以在Chrome中更改此行为。