Symfony 网络通知

Symfony Web Notifications

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

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

我认为你应该使用 Web worker/Service workers 和 Push API 来实现这个

推送 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 hub 上推送 notification/data,然后自动(实时)在您的 Vue 应用程序上显示它们。

编辑 2

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

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