我想为容器实例化的 WebSocket 客户端端点添加一些额外的属性以进行分组/统计。我使用 JSR-356 创建了一个客户端 WebSocket 端点:
Session session = container.connectToServer( MyClientEndpoint.class , uri );
我想将一些对象传递给Session
或MyClientEndpoint
实例:
@ClientEndpoint
public class MyClientEndpoint {
@OnOpen
public void onWebSocketConnect( Session sess ) {
...i need my param here...
}
... @OnMessage, @OnClose, @OnError handlers...
}
因为MyClientEndpoint
实例是由容器实例化的(在我的示例中 - Jetty),所以我不能只在构造函数中传递参数。我也不能在Session
用户属性中设置我的参数:
Session session = container.connectToServer( ClientSocket.class , uri );
session.getUserProperties().put( "group", this);
因为我在@OnOpen
处理程序中没有我的属性,而且我不能保证我的"group"
属性会在任何@OnMessage
call之前设置。
如何以允许我在由容器实例化的@ClientEndpoint 对象中使用其他对象的方式连接到 JSR-356 WebSocket?