当 res.flush() 不起作用时,如何刷新到事件流? 节点.js

问题描述

我使用 express 和 node.js

我一直在努力让加载条正常工作,我终于想出了使用 res.flush() 因为 res.write() 由于压缩中间件而不起作用(据我所知) .

现在当我将它上传到服务器时,我遇到了同样的问题。流不会刷新,加载栏只会在 res.end() 上更新。应该连续发送的所有其他进度也在 res.end() 上发送(一次性发送)。 由于 res.flush() 不像在我的电脑上那样工作,我不知道该怎么做,因为我无法在服务器上调试。

我在客户端有一个 EventSource 监听加载条的更新,但在实时服务器上唯一的更新是在调用 res.end() 时。

<div class="block">
    <div class="level-1">
        <div class="super-wrapper">
            <div class="wrapper">
                <div class="wrapper-initial">
                    <div class="initial">X</div>
                </div>
            </div>
        </div>
    </div>
</div>

最重要的是让它在服务器上工作,但我也很想知道将加载进度发送到路由器的好方法是什么。

解决方法

在斯蒂尔帕克的帮助下,我设法找出了问题所在。

生产服务器在 iis 上运行,我所要做的就是将 reponseBufferLimit=0 设置为默认值 4194304。

可以通过添加来完成

<handlers>
    <add name="iisnode" path="app.js" verb="*" modules="iisnode" responseBufferLimit="0" />
</handlers>

到 web.config 文件。