Symfony Bundle,允许用户互相发送消息



我正在开发一个需要允许用户互相发送消息的Web应用程序。 它应该工作,当用户在线并且他们发送消息时,如果收件人在线,他们将在屏幕上收到通知并能够知道他们已收到消息(他们不必进行页面刷新(

消息应该是对话线程的一部分,而不是电子邮件(尽管通知未登录用户的一种方法是向他们发送电子邮件(

是否有任何捆绑包可以做这种事情,或者我需要Symfony和JS的组合来允许用户网页的实时更新?

我已经查看了像 rabbitMQ 和 FOSmessageBundle 这样的东西,但我还没有弄清楚它们如何让我将用户通知返回到打开的用户会话。

感谢想法或指导。

实时消息交换的首选技术是Websocket

请让我介绍一下websocket的基本工作流程。

让我们以foo和bar为例

聊天的工作流程

  • foo建立与 Websocketserver的连接
  • bar建立与 Websocketserver的连接
  • foo在连接中发送hello消息
  • server收到消息并广播到bar's连接
  • 酒吧从连接有效负载接收消息并显示它

客户端是javascript,恕我直言,你没有选择

对于服务器端,您可以在PHP中执行此操作

我会推荐你一个不太出名但很好的图书馆,叫做Woketo。

节点JS环境更常见,主要是因为节点js比PHP更好。每个进程使用的内存也更少

请随时询问:)

我最近构建了这样的功能,它非常简单。我使用了这个捆绑包来执行发布/订阅功能并让您的 websocket 正常工作。您自己唯一要做的就是在数据库中记录消息(如果您愿意(,并使每个发布/订阅相互指向,以便消息从一个用户传递到另一个用户。

高斯棘轮束

2020年更新:

有一个很棒的自托管替代pub-sub与Symfony原生捆绑在一起:Mercure

最新更新