首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SSE (EventSource)在1小时22分钟后超时。有什么办法让它持续下去吗?

SSE (EventSource)在1小时22分钟后超时。有什么办法让它持续下去吗?
EN

Stack Overflow用户
提问于 2013-11-04 22:11:21
回答 2查看 9K关注 0票数 11

在我的页面中有一个区域,当数据库发生更改时,消息会在其中传递。现在,有些时候数据库会发生很大的变化,以至于每10分钟就会显示一条新消息;而另一些日子,它只会更改几次。我遇到的问题是,EventSource似乎在1小时22分钟后超时,浏览器将不再接收通知。

我想知道是否有一种方法可以保持EventSources的持久性(也就是说,只要浏览器显示页面,EventSource就会激活)。根据我在Google搜索中发现的情况,EventSources应该一直活到标签/窗口关闭为止。不幸的是,我在谷歌搜索中发现的似乎很少,对我来说,情况似乎并非如此。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-18 23:56:07

您没有说明套接字关闭发生在哪里(在浏览器上、客户端机器上的套接字、服务器端的套接字等等)。但是这并不重要,因为修复对于所有的人来说都是一样的:发送保持生存的消息。

服务器应该发送一条保持活动的消息。不是每隔15秒一次,就是在15秒后停止活动。(无论哪种代码更容易编写,服务器端,对您来说。)它可以简单到SSE注释:“:n\n”(以冒号开头的行被忽略)。我更喜欢发送实际数据,因为:

  • 您将看到一条消息,允许客户端保持活动检查(见下文)。
  • 您一定要发送一些有用的东西,比如时间戳(用于检查客户机/服务器时钟是否同步),或者度量等。

在客户端,运行一个setTimeout()设置为20秒的计时器.每次您从服务器接收到任何数据(无论是真正的数据,还是您的生存状态)时,请关闭定时器,然后重新启动它。因此,只有当您的服务器运行超过20秒而没有发送任何信息时,才会调用超时函数。当这种情况发生时,关闭连接并重新连接。

以上假设问题在套接字级别。问题可能是浏览器崩溃了:也许它的内存已经用完了。在这种情况下,我要做的修复是一个一次/小时计时器(setTimeout() in JavaScript),手动关闭并重新打开EventSource连接。或者清除一些您可能正在使用的内存缓冲区。使用FireBug或Chrome工具进行一些分析会告诉您是否有内存问题。

插件:在我即将出版的“让我们的应用程序生产质量”一章中,有一半以上是关于如何在重新连接中保持活力和使用LastId。出货时请购买:-)

票数 18
EN

Stack Overflow用户

发布于 2018-12-29 03:39:20

Chrome每两分钟报告一次"net::ERR_SPDY_PROTOCOL_ERROR 200“,我也遇到了同样的问题。

每分钟发送SSE评论为我解决了这个问题。请参阅下面的Nodejs / Express示例代码。

代码语言:javascript
运行
复制
exports.addWebServices = function(app) {
  app.get('/ws/clientEvent', function(req, res) {
    res.writeHead(200, {
      'Content-Type': 'text/event-stream',
      'Cache-Control': 'no-cache',
      'Connection': 'keep-alive'
    })

    /* Event handlers for SSE here */

    let keepAliveMS = 60 * 1000;
    
    function keepAlive() {
      // SSE comment for keep alive. Chrome times out after two minutes.
      res.write(':\n\n');
      setTimeout(keepAlive, keepAliveMS);
    } 

    setTimeout(keepAlive, keepAliveMS);
  }

}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19778231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档