0

WebSocket サーバーを作成するために、Java-WebSocketライブラリを使用しました。このように見え、動作しています。

しかし、今はアップグレードしたいので、サーバーはアクティブなクライアント接続を 1 つだけ持つことができます。
これを行うための何らかのオプションはありますか、それともすべての接続をチェックし、最初以外のアクティブな接続をすべて閉じる必要がありますか?

私はこのようにそれを試しました:

@Override
public void onOpen(WebSocket conn, ClientHandshake handshake)
{
    System.out.println("WebSocketServer::onOpen()");

    boolean first = true;
    Collection<WebSocket> con = this.connections();
    synchronized(con) {
        for (WebSocket c : con) {
            if (first && c.isOpen()) {
                first = false;
            } else {
                c.close();
            }
        }
    }
}

ただし、これによりすべての接続が閉じられ、Websocket サーバーが強制終了されます。私は何を間違っていますか?

4

1 に答える 1

0

onOpen() メソッドの外側にカウンターを配置して、0 に初期化してみてください。次に、onOpen() メソッドで、カウンターが 1 かどうかを確認します。1 の場合は接続を閉じconn、そうでない場合はカウンターをインクリメントします。

于 2014-01-12T21:03:09.693 に答える