javascript - CakePHP SSE 或悬挂获取

标签 javascript cakephp push-notification long-polling

在新网络应用程序的试用过程中,在执行某些任务(例如新协作者处理文档和注销等)时,会请求服务器提供反馈。

因此,我实现了 SSE(服务器发送事件),它运行良好,我们能够在应用消息“咆哮风格”中获得正确的反馈和良好的效果。

我的问题是:我真的应该使用SSE进行推送还是只使用旧的Hanging Get

从 IT 的 Angular 来看,SSE 似乎没问题,但在某些任务期间,应用程序会设置 rerty 字段重试:500,因此这会增加对服务器的调用次数.

当我使用 Facebook 之类的推送通知(Hanging Get)时,我只会在不检查的情况下收到应该收到的反馈。

-

无关细节

*我们目前不想使用网络套接字。我已经实现了这个,但应用程序不会经常需要这个。

对我来说,随时使用 SSE 或 Polling 并不难,因为我有一个接口(interface),可以实现一个名为 PushService() 的抽象类;所以我可以随时在 SSEService 和 PollService 之间切换 *

最佳答案

事实是:

  • SSE 和长轮询(“Hanging Get”)完成相同的任务 - 当服务器准备就绪时将数据从服务器推送到客户端。

  • 长轮询 requires a hack来实现。上证所没有。

  • 长轮询适用于所有现代网络浏览器。 SSE 适用于大多数现代浏览器的较新版本,但是 does not work in any version of Internet Explorer (在撰写本文时最高可达 IE9)。

鉴于这些事实,两者之间的决定似乎很明确。如果您需要支持 Internet Explorer 或其他旧版本的浏览器(例如,大多数面向公众的应用程序),请使用长轮询。如果您知道您永远不需要支持这些浏览器(例如,某些内部应用程序,如公司管理界面),请使用 SSE。

由于您的案例是新网络应用程序的试点,因此您可能希望支持尽可能多的浏览器,因此请使用长轮询。您还在问题中提到,无论如何,长轮询都会减少服务器上的负载,因此这是一个额外的好处。

关于javascript - CakePHP SSE 或悬挂获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10288955/

相关文章:

javascript - 用于删除网站上部分 img href 的脚本

ios - 我如何在内部编码推送通知

ios - Azure函数: send notification to specific users

azure - 通过 Azure 通知中心使用 Xamarin Forms 在 Android 模拟器上推送通知

javascript - 插入时node.js mysql错误 'ECONNRESET'

javascript - jquery .delay() 不做事

javascript - 用于创建和编辑的 Redux 表单

cakephp - 如何处理以HTTP Post形式发送到cakephp应用程序的json数据?

php - 使用扩展名为 api_ 的 acos、aros 和 aros_acos Acl 表的 CakePHP 自定义 ACL 授权

sql - Cakephp find 返回 null