当尝试写入客户端时,消息被缓冲,在某些情况下,它根本没有被写入。
当前状态:
当我远程登录到服务器时,Server Ready:
消息很容易按预期打印。
当我发送随机数据(“关闭”除外)时,服务器的终端每秒都会很好地显示进度,但客户端输出会等到所有睡眠之后,然后一次打印出来。
最重要的是,当发送“关闭”时,它只是等待强制性的第二个,然后在客户端没有任何写出的情况下关闭。
目标:
我的主要目标是在关闭连接之前向客户端写入一条快速消息。
代码:
// server.php
$loop = React\EventLoop\Factory::create();
$socket = new React\Socket\Server($loop);
$socket->on('connection', function ($conn)
{
$conn->write("Server ready:\n");
$conn->on('data', function ($data) use ($conn)
{
$data = trim($data);
if( $data == 'close')
{
$conn->write("Bye\n");
sleep(1);
$conn->close();
}
for ($i = 1; $i<5; $i++) {
$conn->write(". ");
echo '. ';
sleep(1);
}
$conn->write(".\n");
echo ".\n";
$conn->write("You said \"".$data."\"\n");
});
});
$socket->listen(1337, '127.0.0.1');
$loop->run();
摘要:
为什么在关闭之前我无法向客户写入任何内容?