2

我有聊天客户端服务器应用程序,我们正在扩展它。所以我需要在两个聊天服务器之间进行服务器间通信。

问题是:假设有两台服务器 A 和 B。现在假设客户端 C1 与服务器 A 进行 TCP 连接,客户端 c2 与服务器 B 进行 TCP 连接。那么问题是:作为同一个应用程序,客户端 C1 和 c2 应该能够识别每个其他已登录并在线可用,但这不会发生,因为没有服务器间通信。

可能的解决方案 1 是:使用 TCP 连接将服务器 A 和服务器 B 登录到对方。在这里,我可以通过 TCP 连接将登录 XML 消息(字符串)和 DataInputStream 转发到其他服务器。所以每次登录都会转移到另一台服务器,以便每个服务器都可以访问每个客户端,并且客户端 C1 可以看到客户端 C2 已登录(在线),反之亦然。

解决方案 1 的问题是:假设现在客户端 C1 可以看到客户端 C2 在线可用,并且客户端 C1 向客户端 C2 发送消息。将会发生什么是服务器 A 将尝试为在服务器 B 而不是服务器 A 上建立的客户端 C2 写入 DatainputStream。这是代码将在此处中断的问题,服务器 A 将无法向客户端 C2 发送消息.

任何输入将不胜感激。

谢谢

4

1 回答 1

3

你可以看看 IRC 服务器是如何实现这种功能的。我相信您只需要编写另一台服务器,它将您的服务器作为客户端处理并向它们发出请求,以便找到具体的用户。

https://www.rfc-editor.org/rfc/rfc2810

于 2012-04-17T08:10:01.337 回答