我正在尝试构建即时通讯应用程序。客户不仅会发送消息,还经常发送音频。我决定使用 websocket 连接与客户端进行通信。它速度很快并且允许发送二进制数据。
主要思想是接收来自client1 的消息并通知client2。但事情是这样的。我的应用程序将在 GAE 上运行。如果client1的套接字在server1上打开并且client2的套接字在server2上打开会怎样。该服务器不了解彼此的客户端。
我有一个想法如何解决它,但我确信这是一种糟糕的方式。我将在服务器之间使用某种通信(例如 JMS 或在服务器之间打开另一个 websocket 连接,现在并不重要)。
但这肯定会导致灾难。我什至无法想象这些服务器相互通信的频率。对于每条消息,server1应通知server2,server2应通知client2。但当serverN发挥作用时,事情会变得更糟。
我认为此方法有效的另一种方式是 Firebase。但它将消息大小限制为 4KB。所以我无法通过它发送音频。作为解决方案,我可以通知客户有关新音频的信息,然后他前往我的服务器获取该音频。
希望我清楚地解释了问题。有谁知道如何解决它?或者也许还有其他方法来构建此类应用程序?
sockets google-app-engine chat instant-messaging distributed-system