laravel-5 - RethinkDB、Laravel 和 Ratchet 如何协同工作?

标签 laravel-5 chat real-time rethinkdb ratchet

情况

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

  • RethinkDB
  • Laravel 5
  • Ratchet

  • 我所感知的概念情境

    enter image description here

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

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

    我的问题

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

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

    最佳答案

    您的解释似乎是正确的,尽管我不建议使用 websocket 将数据发送到,而只是将实时数据分发给 channel 的所有订阅者。
    为此,获取一个 API(最好)来接收新的帖子/聊天/用户。
    并使用推送服务器将接收到的数据发送到套接字。
    推送服务器只是应用程序和 websocket 之间的中间部分,它允许 php(laravel) 轻松访问套接字。

    编辑:详细说明
    enter image description here

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

    当有人想要发送消息(在聊天应用程序的情况下)时,他们会将其发送到 API 以检查是否是正确的用户发送的消息,甚至可能使用 apikeys 或其他安全手段。

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

    因此,消息被转发到位于后端(API、 Controller )和 WebSocket(订阅、主题)之间的 pushserver。

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

    使用 API 的优点:

  • 安全
  • 可扩展性
  • 关于laravel-5 - RethinkDB、Laravel 和 Ratchet 如何协同工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36659343/

    相关文章:

    node.js - 在socket.io中如何让客户端在网络丢失时立即断开连接?

    matlab - 从Matlab开始的模拟输入

    authentication - socket.io 客户端命名空间授权

    java - 构建一个简单的聊天客户端

    javascript - 滚动到聊天窗口的底部

    mysql - 过滤掉多个不喜欢的地方

    laravel - 在作业(队列)中未找到类异常

    android - Firebase 实时数据库首次连接花费的时间太长

    php - Laravel Eloquent 查询

    laravel - undefined variable uprofile laravel 5.4