客户端重新连接到服务器后,从服务器向客户端发送 Java 消息

标签 java sockets messaging

我想知道是否有任何方法可以将消息从一个客户端获取到另一个客户端,并且如果接收客户端未连接到服务器,但在一段时间后连接,则该客户端应该收到这些消息。

假设客户端 A 和客户端 B:

  1. 客户端A向客户端B发送消息,但客户端B离线
  2. 客户端消息必须以某种形式存储在服务器上(我希望 知道)
  3. 当客户端 B 连接到服务器时,应该收到在客户端离线时发送给该客户端的所有消息。

一切都应该使用套接字在 Java 中完成。

是否有任何机制可以存储这些离线消息,然后在客户端连接到服务器后立即将其发送到客户端?

最佳答案

您可以使用不同类型的存储 - 数据库、内存、某些云存储、纯文本文件等。例如,如果您将所有消息存储在内存中(以使其更简单),并且每条消息以及发送者和接收者都有一个递增的 ID(我想您可以用不同的方式做到这一点,但我只是给出一个建议)。

因此,当新客户端连接到服务器并进行身份验证(以确保客户端 B 是否加入聊天时,它与以前的客户端 B 相同)时,客户端可以“告诉”服务器最后收到的消息 ID。然后服务器可以将错过的消息推送给客户端。当然,这在很大程度上取决于您的模型以及您到底想要实现什么。也许在内存中存储消息并不是最好的选择,您可以使用数据库或其他东西 - 这取决于您的需要。

关于客户端重新连接到服务器后,从服务器向客户端发送 Java 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46911564/

相关文章:

java - 服务器套接字重新连接问题

java - 最佳 "free"JMS 实现(不会一直崩溃)

java - 在添加新行之前验证行不为空

java - 打破 Transformer 流程​​ Spring Integration

具有使用不同参数的构造函数的 Java 简单工厂

sockets - Azure 辅助角色上的 FTPS

java - 使用 Httpclient 获取数据并使用 JSON 显示

java - 健壮的 Java 套接字编程

Android SkypeOut 复制功能

c# - 当不再引用订阅者时,如何实现取消订阅的事件?