2012-06-30 1 views
0

Мне нужен скрипт, который прослушивает соединения и выводит полученные данные. Я попытался следующий код:Сервер сокета отображает полученные данные на странице

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(), и даже установка output_buffering = Off в php.ini не поможет. Может ли буферизация в браузере привести к этому, и есть ли что-нибудь еще, что я должен попробовать?

ответ

1

Как я думал, это произошло из-за того, что браузер Chrome отображает вывод только тогда, когда соединение закрыто. К сожалению, нет простого способа изменить это поведение в Chrome.