是否可以仅使用 jquery/ajax 构建推送通知系统?

Posted

技术标签:

【中文标题】是否可以仅使用 jquery/ajax 构建推送通知系统?【英文标题】:Is it possible to build a push notification system with just jquery/ajax? 【发布时间】:2015-07-07 04:23:48 【问题描述】:

有像 Faye 这样的 gem,允许一个用户采取行动向另一个用户发送实时推送通知,类似于 facebook 通知。

有谁知道只使用 jquery 和 ajax 来完成此任务的方法吗?

【问题讨论】:

Ajax 正在使用 http,一旦 http 完成它的任务,它将与服务器断开连接。除非您设置间隔并保持从服务器池化,否则您无法从服务器推送。另一种方法是使用web socket 或server sent event (SSE) 仅供参考,您可以阅读Push : SSE vs WebSockets 【参考方案1】:

按照 Joey Chong 的回答,您可以使用 SSE(Servent-Sent Events)将消息推送给用户(Faye 基于 websocket,这可能是某些代理和防火墙的问题,看起来您没有t 真的需要双向连接)。

有关 websockets 和 SSE 的更多信息:here 和 here。

如果您不想构建 SSE 服务器或只是想测试一些客户端代码,StreamData 将允许您将任何 JSON API 转换为 SSE 推送(免责声明:我代表这家公司)。它最多可免费提供 100 万条消息,因此如果 SSE 不是您想要的,您可以尝试留下它。

【讨论】:

仅供参考,在您的网站上,我得到了比特币示例:“跨源请求被阻止:同源策略不允许读取proxy.streamdata.io/https://api.bitcoinaverage.com...的远程资源”。对于第一个示例,我现在也得到了相同的结果,尽管这在不久前就起作用了! FF/Ubuntu LTS/NoScript。 非常感谢您的反馈)(对于编辑,我会记得每次都放免责声明)。关于错误消息,proxy.streamdata.io 是一个演示代理,我们不保证 SLA,因为不需要识别。上周,提出了很多请求,我们达到了允许的最大连接数。我们已经提高了极限。它现在应该可以在演示代理上正常工作。您也可以通过创建用户来测试它,然后我们保证即使在免费增值模式中也会有更高的限制。【参考方案2】:

不,没有办法直接做到这一点。但是,如果您想从 Web 应用程序发送推送通知,有一些推送通知 API(例如 Chrome Push Notification API 和 PushBullet)很有用。

【讨论】:

以上是关于是否可以仅使用 jquery/ajax 构建推送通知系统?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以选择 iOS 推送通知仅显示在通知中心?

是否可以仅在 iOS 中的推送通知上振动?

推送内容更改通知

仅使用 jQuery/Ajax 刷新表的值而不重新加载页面

jQuery.Ajax与Ajax.beginform一起使用不引人注目的JavaScript

来自 Xcode 构建和 App Center 构建更改的 APNS 设备令牌仅从 xcode 接收推送通知