1小时22分钟后,SSE(EventSource)超时。有什么办法可以保持持久性吗?

弗朗兹·卡夫卡(Franz Kafka)

我的页面上有一个区域,当数据库更改时,消息会发送到该区域。现在,几天后数据库将发生巨大变化,以致每隔10分钟就会显示一条新消息。其他日子只会改变几次。我遇到的问题是EventSource似乎在1小时22分钟后超时,浏览器将不再接收通知。

我想知道是否有一种方法可以保持EventSources持久(即,只要浏览器显示页面,EventSource就会保持活动状态)。根据我在Google搜索中发现的信息,EventSources应该保持活动状态,直到关闭选项卡/窗口。不幸的是,在Google搜索中找不到的东西非常少,对我而言似乎并非如此。

达伦·库克(Darren Cook)

您无需说明套接字关闭发生的位置(在浏览器上,客户端计算机上的套接字,服务器端的套接字等),但实际上并不重要,因为所有修复方法都相同:send keep -活动消息。

服务器应发送一个保持活动消息。每15秒一次;或仅在15秒钟不活动之后。(对于您而言,这在服务器端更容易编码。)它可以像SSE注释一样简单:“:\ n \ n”(以冒号开头的行将被忽略)。我更喜欢发送实际数据,因为:

  • 您会看到一条消息,允许客户端进行保持活动检查(请参阅下文)
  • 您肯定会发送一些有用的信息,例如时间戳(用于检查客户端/服务器时钟是否同步)或指标等。

在客户端,运行setTimeout()设置为20秒的计时器每次您从服务器收到任何数据(无论是真实数据还是保持活动状态)时,请终止计时器,然后重新启动。因此,只有当您的服务器超过20秒而不发送任何内容时,才会调用超时功能。发生这种情况时,请终止连接并重新连接。

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

插件:在我即将上线的SSE书籍中,“提高应用程序的生产质量”一章中有一半以上是关于保持活动并在重新连接上使用LastId的。出来的时候请买:-)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

每小时30分钟后每2小时有一个systemd计时器吗?

来自分类Dev

在1小时而不是15分钟后锁定Gnome屏幕?

来自分类Dev

24小时显示时间...如果不是30分钟过去了,我可以只显示小时吗?

来自分类Dev

Node.js:http请求在1分钟后超时

来自分类Dev

Nginx上的Flask应用在1分钟后超时

来自分类Dev

屏幕(非锁定屏幕)超时停留在1分钟后

来自分类Dev

Windows 8和Windows 10 Lockscreen在仅1分钟后超时,并且屏幕变黑

来自分类Dev

如何分别在“现在”,“ 1分钟前”,“ 1小时前”显示时间

来自分类Dev

1分钟后截图

来自分类Dev

是否可以在Asp.net中将会话超时设置为1分钟?

来自分类Dev

十分钟后svnsync超时

来自分类Dev

如何每8小时1分钟运行一次CRON

来自分类Dev

如何创建间隔为1分钟的28小时制的表格?

来自分类Dev

如何每8小时1分钟运行一次CRON

来自分类Dev

PHP Event预订:30分钟内获取时间为1小时

来自分类Dev

为什么我的Cron作业每隔1小时设置一次,却每隔1分钟运行一次?

来自分类Dev

为什么我的Cron作业每隔1小时设置一次,却每隔1分钟运行一次?

来自分类Dev

如何增加5小时30分钟的时间?

来自分类Dev

MySQL 24小时平均10分钟

来自分类Dev

我可以在没有外部持久性提供程序的情况下使用JPA吗?

来自分类Dev

iOS应用:20分钟后服务器超时验证。这正常吗,我该如何处理?

来自分类Dev

1分钟后,Elastic Beanstalk Worker的SQS守护程序获得504网关超时

来自分类Dev

R:以不规则的1分钟时间序列计算1小时平均值

来自分类Dev

什么是ActiveRecord持久性?

来自分类Dev

什么是ActiveRecord持久性?

来自分类Dev

每24小时一分钟的布尔记录的良好数据结构是什么

来自分类Dev

有什么办法可以保持Swift闭包吗?

来自分类Dev

如何将“ 1天,14小时,16分钟”之类的文本转换为时间格式?

来自分类Dev

2分钟后线程什么也不做

Related 相关文章

  1. 1

    每小时30分钟后每2小时有一个systemd计时器吗?

  2. 2

    在1小时而不是15分钟后锁定Gnome屏幕?

  3. 3

    24小时显示时间...如果不是30分钟过去了,我可以只显示小时吗?

  4. 4

    Node.js:http请求在1分钟后超时

  5. 5

    Nginx上的Flask应用在1分钟后超时

  6. 6

    屏幕(非锁定屏幕)超时停留在1分钟后

  7. 7

    Windows 8和Windows 10 Lockscreen在仅1分钟后超时,并且屏幕变黑

  8. 8

    如何分别在“现在”,“ 1分钟前”,“ 1小时前”显示时间

  9. 9

    1分钟后截图

  10. 10

    是否可以在Asp.net中将会话超时设置为1分钟?

  11. 11

    十分钟后svnsync超时

  12. 12

    如何每8小时1分钟运行一次CRON

  13. 13

    如何创建间隔为1分钟的28小时制的表格?

  14. 14

    如何每8小时1分钟运行一次CRON

  15. 15

    PHP Event预订:30分钟内获取时间为1小时

  16. 16

    为什么我的Cron作业每隔1小时设置一次,却每隔1分钟运行一次?

  17. 17

    为什么我的Cron作业每隔1小时设置一次,却每隔1分钟运行一次?

  18. 18

    如何增加5小时30分钟的时间?

  19. 19

    MySQL 24小时平均10分钟

  20. 20

    我可以在没有外部持久性提供程序的情况下使用JPA吗?

  21. 21

    iOS应用:20分钟后服务器超时验证。这正常吗,我该如何处理?

  22. 22

    1分钟后,Elastic Beanstalk Worker的SQS守护程序获得504网关超时

  23. 23

    R:以不规则的1分钟时间序列计算1小时平均值

  24. 24

    什么是ActiveRecord持久性?

  25. 25

    什么是ActiveRecord持久性?

  26. 26

    每24小时一分钟的布尔记录的良好数据结构是什么

  27. 27

    有什么办法可以保持Swift闭包吗?

  28. 28

    如何将“ 1天,14小时,16分钟”之类的文本转换为时间格式?

  29. 29

    2分钟后线程什么也不做

热门标签

归档