gpt4 book ai didi

javascript - SSE 未按预期在 Heroku 上工作

转载 作者:行者123 更新时间:2023-12-02 15:49:59 24 4
gpt4 key购买 nike

这是我第一次使用服务器发送事件,可能我做错了什么...我只是按照一些指南进行代码实验,在本地一切似乎都工作正常.

不幸的是,当我在 Heroku 上上传应用程序时,它无法按预期工作。

Javascript 看起来像这样:

// SSE Start
// Check if SSE is supported
if (!!window.EventSource) {
var source = new EventSource('/live/redis');
} else {
console.log('SSE not supported');
}

source.addEventListener('open', function (e) {
console.log('Connection Open');
}, false);

我正在使用 NodeJSRedis 从 API 获取实时消息,但这并不重要...

SSE连接打开时,我只需在浏览器上打印日志。

我现在什么也不做,如果我在本地打开我的应用程序,它就会正常工作,并且我会收到 console.log 消息。

如果我在 Heroku 上推送项目,我不会收到任何打开连接的消息。

我不明白为什么,可能缺少某些东西或者我需要配置 Heroku 以支持 SSE?

如果我使用命令 heroku local 打开项目,它也可以正常工作......

编辑:

从 Heroku 日志中我收到以下内容:

app/web.1: GET/live/redis 500 86.403 ms - -

我不明白为什么,在本地它工作正常,在 Heroku 上却不然。

最佳答案

错误出现在我的 Node.js Controller 上,以该行开头的路由 /live/redis :

// let request last as long as possible
req.socket.setTimeout(Infinite);

用下面的行更改它解决了我的问题:

// let request last as long as possible
req.socket.setTimeout(0x7FFFFFFF);

现在我不知道这是否是正确的方法,但目前它正在工作。

关于javascript - SSE 未按预期在 Heroku 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31918214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com