我在我的网站上使用Symfony 4.2+vue.js。我想发送类似于Podio/Facebook通知的网络通知(而不是浏览器通知)。我已经搜索了socket.io,但由于它是node,我想我不能将它与Symfony一起使用。不仅如此,我还在使用纱线服务器。
你们能给我一个想法吗?我该如何实现它?
我认为您应该使用带有Push API的Web工作者/服务工作者来实现这个
推送API允许发送推送通知,即使您的网站关闭或打开了网站的0个选项卡。
请参阅:https://developer.mozilla.org/en-US/docs/Web/API/Push_API
基本上,你需要注册一个新的服务人员,然后从你的Symfony Backend应用程序或VueJS发送信息,然后推送新的通知
这里有一个完整的示例和一些代码。
编辑
如果你想在应用程序内部发出类似Facebook的通知,你应该实现https://github.com/artemsky/vue-snotify并重新处理noitifications模板,使其显示为您想要的
如果你想将SocketIO与Symfony一起使用,有https://packagist.org/packages/wisembly/elephant.io允许这样做。我认为,您需要使用Docker来拥有nodejs/ssocketio服务器和实际的应用程序。
你甚至可以尝试使用Mecure协议(存在符号集成),让你的应用程序在mercure集线器上推送通知/数据,然后自动(实时)在你的Vue应用程序上显示它们。
编辑2
实际上,我在Symfony网站上使用的方法(需要使用实时工具进行返工,但效果良好)是创建一个DB表,该表将存储所有通知,然后使用JS,使用AJAX和自定义Symfony控制器,每隔X次检查一次通知表上是否有新条目。
使用棘轮,非常简单。我在Symfony中实现了它,它有简单的文档,有助于更快地编写代码。