1

我想为容器实例化的 WebSocket 客户端端点添加一些额外的属性以进行分组/统计。我使用 JSR-356 创建了一个客户端 WebSocket 端点:

Session session = container.connectToServer( MyClientEndpoint.class , uri );

我想将一些对象传递给SessionMyClientEndpoint实例:

@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"属性会在任何@OnMessagecall之前设置。

如何以允许我在由容器实例化的@ClientEndpoint 对象中使用其他对象的方式连接到 JSR-356 WebSocket?

4

1 回答 1

0

实际上,我们并没有被迫对实例进行容器实例化@ClientEndpoint。我们可以传递我们的自定义实例:

ClientSocket socket = new ClientSocket( ANY PARAMS WE WANT );
Session session = container.connectToServer( socket , uri );
于 2014-03-20T11:39:07.727 回答