2016-06-14 11 views
4

今はjavax.websocket.* APIを使用していますが、インターネットで検索した後にコンストラクタパラメータを使用してEndpointを初期化する方法がわかりません。コンストラクタパラメータを使用してWebSocket Endpointを初期化する方法

私は MyWebSocketEndpointを初期化するときのように、私は何かをして、私の onOpen方法では、 clientQueueを言う、パラメータを使用することができますいくつかのパラメータを通過したい
ServerContainer container = WebSocketServerContainerInitializer.configureContext(context); //jetty 
container.addEndpoint(MyWebSocketEndpoint.class); 

:あなたはServerContainer.addEndpoint(ServerEndpointConfig)を呼び出し、ServerEndpointConfig.Configuratorを必要とする必要が

clientQueue.add(new Client(session)); 

答えて

3

この作業を行うための実装。

public class MyWebSocketEndpointConfigurator extends ServerEndpointConfig.Configurator { 
    private ClientQueue clientQueue_; 

    public MyWebSocketEndpoint(ClientQueue clientQueue) { 
     clientQueue_ = clientQueue; 
    } 

    public <T> T getEndpointInstance(Class<T> clazz) throws InstantiationException { 
     return (T)new MyWebSocketEndpoint(clientQueue_); 
    } 
} 

、その後ServerContainerでそれを登録します:

ClientQueue clientQueue = ... 
ServerContainer container = ... 
container.addEndpoint(ServerEndpointConfig.Builder 
    .create(MyWebSocketEndpoint.class, "/") // the endpoint url 
    .configurator(new MyWebSocketEndpointConfigurator(clientQueue _)) 
    .build()); 

まず、あなたのエンドポイントのファクトリとして機能するカスタムServerEndpointConfig.Configuratorクラスを作成します

関連する問題