Symfony 网络通知

Posted

技术标签:

【中文标题】Symfony 网络通知【英文标题】:Symfony Web Notifications 【发布时间】:2019-02-06 09:11:17 【问题描述】:

我在我的网站上使用 Symfony 4.2 + vue.js。我想发送类似于 Podio / Facebook 通知的网络通知(不是浏览器通知)。我搜索了 socket.io,但由于它是节点,我认为我不能将它与 Symfony 一起使用。 不仅如此,我还在使用纱线服务器。

你们能不能给我一个想法,我该如何实现它?

【问题讨论】:

如果你想用 php 后端实现 websocket 连接,Ratchet 可能很有用socketo.me 我过去用 Ratchet 和 Symfony (2.8) 实现了一个实时 web 应用程序,它工作得很好 (是的,我知道,对于实时应用程序,node.js 可能是一个更好的选择,但这是客户要求...¯_(ツ)_/¯) 【参考方案1】:

我认为您应该使用带有 Push API 的 Web 工作者/服务工作者来实现此目的

Push API 允许发送推送通知,即使您的网站关闭或打开了 0 个标签页。

见:https://developer.mozilla.org/en-US/docs/Web/API/Push_API

基本上你需要注册一个新的服务工作者,然后从你的 Symfony 后端应用程序或 VueJS 发送信息,然后推送新的通知

你有一个完整的exemple here 和一些代码。

编辑

如果你想让 Facebook 像应用内通知一样,你应该实现 https://github.com/artemsky/vue-snotify 并重新设计通知模板以按你想要的方式显示它们

如果你想在 Symfony 中使用 SocketIO,https://packagist.org/packages/wisembly/elephant.io 允许这样做。我认为你需要使用 Docker 来拥有你的 nodejs/socketio 服务器和你的实际应用程序。

您甚至可以尝试使用Mecure protocol(存在 symfony 集成)让您的应用在 Mercure 中心推送通知/数据,然后自动(实时)将它们显示在您的 Vue 应用上。

编辑 2

我在我的 Symfony 网站中实际使用的方式(需要使用实时工具进行返工但运行良好)是创建一个数据库表来存储所有通知,然后使用 JS 每隔 X 次检查一次通知表上的新条目,使用 AJAX 和自定义 Symfony 控制器。

【讨论】:

我认为是浏览器通知,我想要类似于 Facebook 或 podio 的通知 Facebook 通知标签之类的应用内通知? 是的,在我的网站里面还有计数 @XavierIssac 我添加了我在 Symfony/Vue 应用程序中实际使用的方式 其实snotify只会起到alert的作用,这里不能用:)【参考方案2】:

使用棘轮,很简单。我在 Symfony 中实现了它,它有简单的文档,有助于更快地编码。

【讨论】:

以上是关于Symfony 网络通知的主要内容,如果未能解决你的问题,请参考以下文章

Android开发本地及网络Mp3音乐播放器(十九)通知媒体库更新刚下载的MP3

delphi如何能判断网络通不通?

Symfony 4.4 metadata_cache_driver 配置键弃用通知

尝试使用 symfony 创建 Web 服务时出现问题

容器网络通,但业务网络不通,怎么办?

finalshell用啥命令查看网络通不通