RethinkDB,Laravel和Ratchet如何协同工作?

时间:2016-04-16 01:58:02

标签: laravel-5 chat real-time rethinkdb ratchet

情况

我正在尝试使用以下技术堆栈构建实时聊天玩具应用

  • RethinkDB
  • Laravel 5
  • 棘轮

我认为是概念性情况

enter image description here

绿色箭头表示实时数据交换。

黑色箭头表示其他非实时请求和数据交换。

我的问题

我想知道基于图表我对使用技术堆栈的聊天实现的理解是否正确?

如果有不准确之处,会是什么?

1 个答案:

答案 0 :(得分:0)

您的解释似乎是正确的,尽管我不建议使用websocket发送数据,但仅将实时数据分发给频道的所有订阅者。 要做到这一点,获得一个API(最好)去接收新的帖子/聊天/用户。 并使用推送服务器将收到的数据发送到套接字。 推送服务器只是app和websocket之间的一个,它允许php(laravel)轻松访问套接字。

编辑:详细说明 enter image description here

重试向您解释此问题。 所有客户端都收听WebScoket服务器。这是一个被动的连接,它们只会根据它们拥有的主题/订阅从套接字接收消息。

当有人想要发送消息时(如果是聊天应用程序),他们会将其发送到API以检查合适的用户是否发送了该消息,甚至可能使用apikeys或其他安全措施。

在API中收到消息后,API会将其分发给该聊天室/主题/订阅的所有侦听客户端。

因此消息被转发到pushserver,它位于后端(API,控制器)和WebSocket(订阅,主题)之间。

推送服务器随后将消息转发到WebSocket,然后WebSocket将消息分配给正确的侦听器。

使用API​​的优点:

  • 安全
  • 可扩展性