【发布时间】:2020-03-30 10:40:10
【问题描述】:
我有一个本地文件,一些进程不断地附加到该文件中。我想通过boost::beast 提供该文件。
到目前为止,我使用boost::beast::http::response<boost::beast::http::file_body> 和boost::beast::http::async_write 将文件发送到客户端。这工作得很好,很高兴boost::beast 照顾一切。但是,当到达文件末尾时,它会停止异步写入。我认为这是因为底层serializer 的is_done 在此时返回true。
是否可以保持异步写入持续进行,以便随着本地文件的增长将新内容写入客户端(类似于tail -f 将文件内容持续写入标准输出的方式)?
我认为我可能需要使用boost::beast::http::response_serializer<boost::beast::http::file_body> 进行这种自定义,但我不确定如何正确使用它。我是否需要为此使用分块编码?
请注意,保持 HTTP 连接打开不是问题,只有在文件增长时才写入进一步的输出。
【问题讨论】:
标签: c++ http boost boost-asio boost-beast