我想为容器实例化的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
属性设置为
如何以允许我在容器实例化的@ClientEndpoint对象中使用其他对象的方式连接到JSR-356 WebSocket?
答案 0 :(得分:0)
实际上,我们不会被迫对@ClientEndpoint
个实例进行容器实例化。我们可以传递我们的自定义实例:
ClientSocket socket = new ClientSocket( ANY PARAMS WE WANT );
Session session = container.connectToServer( socket , uri );