我用 express.js 设置我的 REST 服务器。现在我想将 sse 添加到此服务器。在我实现 这个 sse 包之后,我得到了一个错误。我知道我收到这个错误,什么时候会尝试使用 res.send
两次,但我没有。
ERROR: Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (http.js:690:11)
at ServerResponse.header (/home/root/node_modules/express/lib/response.js:718:10)
at ServerResponse.send (/home/root/node_modules/express/lib/response.js:163:12)
at app.get.str (/home/root/.node_app_slot/main.js:1330:25)
at Layer.handle [as handle_request] (/home/root/node_modules/express/lib/router/layer.js:95:5)
at next (/home/root/node_modules/express/lib/router/route.js:131:13)
at sse (/home/root/node_modules/server-sent-events/index.js:35:2)
at Layer.handle [as handle_request] (/home/root/node_modules/express/lib/router/layer.js:95:5)
at next (/home/root/node_modules/express/lib/router/route.js:131:13)
at Route.dispatch (/home/root/node_modules/express/lib/router/route.js:112:3)
有没有可能我不能再在 sse 函数中使用 express 方法了?例如:
app.get('/events', sse, function(req, res) {
res.send('...');
});
此外,我找到 了这个 解决方案和 这个.是否可以使用 res.write
函数或以其他方式而不使用其他包来制作 sse?
原文由 Steckdoserich 发布,翻译遵循 CC BY-SA 4.0 许可协议
您绝对可以在没有其他软件包的情况下实现这一目标。
我写了一篇关于此的博客文章, 第 1 部分 列出了基础知识。
您不能关闭 SSE,因为那样会破坏功能。关键在于它是一个开放的 HTTP 连接。这允许在任何时候将新事件推送到客户端。