情况
我正在尝试使用以下技术堆栈构建实时聊天玩具应用程序
我所感知的概念情境
绿色箭头代表实时数据交换。
黑色箭头代表其他非实时请求和数据交换。
我的问题
我想知道根据图表我对使用技术堆栈实现聊天的理解是否正确?
如果有不准确之处,它们会是什么?
最佳答案
您的解释似乎是正确的,尽管我不建议使用 websocket 将数据发送到,而只是将实时数据分发给 channel 的所有订阅者。
为此,获取一个 API(最好)来接收新的帖子/聊天/用户。
并使用推送服务器将接收到的数据发送到套接字。
推送服务器只是应用程序和 websocket 之间的中间部分,它允许 php(laravel) 轻松访问套接字。
编辑:详细说明
重新尝试向您解释这一点。
所有客户端都收听 WebScoket 服务器。这是一个被动的连接,他们只会根据他们拥有的主题/订阅从套接字接收消息。
当有人想要发送消息(在聊天应用程序的情况下)时,他们会将其发送到 API 以检查是否是正确的用户发送的消息,甚至可能使用 apikeys 或其他安全手段。
一旦在 API 中收到消息,API 就会将其分发给该聊天室/主题/订阅的所有收听客户端。
因此,消息被转发到位于后端(API、 Controller )和 WebSocket(订阅、主题)之间的 pushserver。
推送服务器随后将消息转发到 WebSocket,然后 WebSocket 将消息分发给正确的监听器。
使用 API 的优点:
关于laravel-5 - RethinkDB、Laravel 和 Ratchet 如何协同工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36659343/