websocket 在java中将数据从对象传递到父对象

ffscu2ro  于 2022-11-11  发布在  Java
关注(0)|答案(1)|浏览(150)

在我的项目中,我尝试为我的WebSocket示例实现一个事件处理。所以我基本上有3个类:
我的AuthClient类,它扩展了WebsocketClient并具有onMessage回调。在此onMessage方法中,websocket可以进入不同的状态,如“hello”、“pending_finish”、“finish”等。

public class AuthClient extends WebSocketClient  {
 @Override
 onMessage(String message) {
   switch(message) ... // data events here
 } 
}

我现在正在尝试编写一个名为ClientManager的父类,我希望在其中存储和管理多个websocket。

// trying to receive data from specific data events for each client here
public class ClientManager {

private int maxClients;
private final Map<String, AuthClient> clients;
private final HashSet<String> tokens;

public ClientManager(HashSet<String> tokens, int maxClients) {
    this.tokens = tokens;
    this.maxClients = maxClients;
    this.clients = new HashMap<>(maxClients);
}
}

我的问题是,如何将从WebsocketClient收到的数据在此onMessage回调中传递给ClientManager?我需要一个不会有任何重大性能损失的解决方案。
我已经尝试过用事件实现一个接口,但我不太明白它是否能与共享数据一起工作。

qlzsbp2j

qlzsbp2j1#

这看起来是一个很好的观察者模式的用例。你的观察者是你的管理器类,你的可观察对象是你的WebSocket客户端。任何时候你创建一个新的websocket客户端,使用registerObserver方法注册你的管理器类示例。然后当你想从你的websocket客户端向你的管理器转发一个消息时,您可以简单地调用notifyObservers方法将请求转发给任何已注册的观察器。2请看下面的模式信息:https://www.baeldung.com/java-observer-pattern

相关问题