我想知道是否有任何方法可以将消息从一个客户端获取到另一个客户端,并且如果接收客户端未连接到服务器,但在一段时间后连接,则该客户端应该收到这些消息。
假设客户端 A 和客户端 B:
- 客户端A向客户端B发送消息,但客户端B离线
- 客户端消息必须以某种形式存储在服务器上(我希望 知道)
- 当客户端 B 连接到服务器时,应该收到在客户端离线时发送给该客户端的所有消息。
一切都应该使用套接字在 Java 中完成。
是否有任何机制可以存储这些离线消息,然后在客户端连接到服务器后立即将其发送到客户端?
最佳答案
您可以使用不同类型的存储 - 数据库、内存、某些云存储、纯文本文件等。例如,如果您将所有消息存储在内存中(以使其更简单),并且每条消息以及发送者和接收者都有一个递增的 ID(我想您可以用不同的方式做到这一点,但我只是给出一个建议)。
因此,当新客户端连接到服务器并进行身份验证(以确保客户端 B 是否加入聊天时,它与以前的客户端 B 相同)时,客户端可以“告诉”服务器最后收到的消息 ID。然后服务器可以将错过的消息推送给客户端。当然,这在很大程度上取决于您的模型以及您到底想要实现什么。也许在内存中存储消息并不是最好的选择,您可以使用数据库或其他东西 - 这取决于您的需要。
关于客户端重新连接到服务器后,从服务器向客户端发送 Java 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46911564/