【问题标题】:How to restrict WebSocket server connection to only one?如何将 WebSocket 服务器连接限制为只有一个?
【发布时间】:2014-01-10 13:43:01
【问题描述】:

为了创建 WebSocket 服务器,我使用了 Java-WebSocket 库。它看起来像 this,并且正在运行。

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

我试过这样:

@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 服务器。我做错了什么?

【问题讨论】:

    标签: java websocket java-websocket


    【解决方案1】:

    尝试在 onOpen() 方法之外放置一个计数器,并将其初始化为 0。 然后在onOpen()方法中,检查计数器是否为1。如果是,关闭连接conn,否则递增计数器。

    【讨论】:

    • 不,这行不通,因为问题有点大。如果我在onOpen() 方法中关闭所有连接(又名:拒绝所有连接),WebSocket 服务器将被终止(首先运行 onError,然后运行 ​​onClose,然后再次运行 onError)。
    • 可能是因为你关闭了一个尚未打开的套接字?
    • 如何检查?如果我们知道如何拒绝所有连接,我就会知道如何关闭特定连接,或者关闭除特定连接之外的所有连接......
    猜你喜欢
    • 2019-09-01
    • 2019-06-23
    • 1970-01-01
    • 2014-11-26
    • 2019-01-14
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 2014-09-08
    相关资源
    最近更新 更多