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