0

为了创建 WebSocket 服务器,我使用了Java-WebSocket库。它看起来像这样,并且正在工作。

但现在我想升级,所以服务器只能有一个活动的客户端连接。
是否有某种选项可以执行此操作,或者我应该检查所有连接并关闭所有非第一个活动连接?

我试过这样:

@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。如果是,则关闭连接conn,否则递增计数器。

于 2014-01-12T21:03:09.693 回答