【发布时间】:2014-09-10 07:46:43
【问题描述】:
我有一个在 nginx 后面运行的 Web 应用程序。有些页面可以通过http访问,有些可以通过https访问。我有一些“页面”,它们是流,因为应用程序不会关闭连接并在数据到来时提供数据。提要如下所示:
TIME1 MESSAGE1
TIME2 MESSAGE2
...
TIMEn MESSAGEn
在每一行之后我写“\n”然后调用flush()。通过 http,它可以正常工作,我的客户可以收听新数据。但是,通过 https 客户端在连接关闭之前不会接收任何数据。
ServletOutputStream stream = applicationModel.getOutputStream();
OutputStreamWriter streamWriter = new OutputStreamWriter(stream);
BufferedWriter writer = new BufferedWriter(streamWriter);
while (true) {
wait();
writer.write(newMessage);
writer.flush();
}
【问题讨论】:
-
flush() 仅刷新应用程序的输出缓冲区,但 nginx 本身也可以缓冲(其他服务器也这样做)。见stackoverflow.com/questions/20018803/…
-
如果您将其发布为答案,我会接受。奇怪的是,只有 https 请求被缓冲。