我正在尝试使用以下技术堆栈构建实时聊天玩具应用
绿色箭头表示实时数据交换。
黑色箭头表示其他非实时请求和数据交换。
我想知道基于图表我对使用技术堆栈的聊天实现的理解是否正确?
如果有不准确之处,会是什么?
答案 0 :(得分:0)
您的解释似乎是正确的,尽管我不建议使用websocket发送数据,但仅将实时数据分发给频道的所有订阅者。 要做到这一点,获得一个API(最好)去接收新的帖子/聊天/用户。 并使用推送服务器将收到的数据发送到套接字。 推送服务器只是app和websocket之间的一个,它允许php(laravel)轻松访问套接字。
重试向您解释此问题。 所有客户端都收听WebScoket服务器。这是一个被动的连接,它们只会根据它们拥有的主题/订阅从套接字接收消息。
当有人想要发送消息时(如果是聊天应用程序),他们会将其发送到API以检查合适的用户是否发送了该消息,甚至可能使用apikeys或其他安全措施。
在API中收到消息后,API会将其分发给该聊天室/主题/订阅的所有侦听客户端。
因此消息被转发到pushserver,它位于后端(API,控制器)和WebSocket(订阅,主题)之间。
推送服务器随后将消息转发到WebSocket,然后WebSocket将消息分配给正确的侦听器。
使用API的优点: