JJ2*_*J23 7 http node.js http-streaming docker
我使用httpmodule.js 在 Node.js 中编写了以下代码。它基本上监听事件流(因此连接是永久的)。
http.get(EVENT_STREAM_ADDRESS, res => {
res.on('data', (buf) => {
const str = Buffer.from(buf).toString();
console.log(str);
});
res.on('error', err => console.log("err: ", err));
});
Run Code Online (Sandbox Code Playgroud)
如果我在 Mac 上运行上述代码,它工作正常,并且在几个小时后我会将数据记录到控制台。但在具有非常基本配置的 Docker 中,它在一段时间后停止接收数据,没有任何错误。应用程序中的其他端点工作正常(例如 Express 端点),但这个端点http.get listener只是挂起。
Dockerfile
FROM node:current-alpine
WORKDIR /app
EXPOSE 4000
CMD npm install && npm run start
Run Code Online (Sandbox Code Playgroud)
你有什么想法我可以如何克服这个问题吗?
调试起来确实很困难,因为要重现有时需要等待几个小时的情况。
干杯
我知道可能发生了什么。
问题是 Mac 版 Docker Desktop。看起来它有时会停止容器,就像在 Mac 进入睡眠状态的情况下一样。它会中断侦听器,使其停止接收新的数据块。我在 VirtualBox 中的 Ubuntu 上启动了同一个容器,它一直运行良好。
| 归档时间: |
|
| 查看次数: |
584 次 |
| 最近记录: |