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

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

2分钟后线程什么也不做

来自分类Dev

十分钟后svnsync超时

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

什么是ActiveRecord持久性?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

什么是ActiveRecord持久性?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

MySQL 24小时平均10分钟

来自分类Dev

1分钟后截图

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

    2分钟后线程什么也不做

  5. 5

    十分钟后svnsync超时

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

    什么是ActiveRecord持久性?

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

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

  25. 25

    什么是ActiveRecord持久性?

  26. 26

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

  27. 27

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

  28. 28

    MySQL 24小时平均10分钟

  29. 29

    1分钟后截图

热门标签

归档