1

グループ化/統計のために、コンテナーでインスタンス化された 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 に接続するにはどうすればよいですか?

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 に答える