2014-01-10 35 views
0

用于创建WebSocket服务器我已经使用了Java-WebSocket库。它看起来像this,它正在工作。如何限制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服务器。我究竟做错了什么?

回答

0

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

+0

不,这不起作用,因为问题有点大。如果我在'onOpen()'方法中关闭了所有连接(又名:拒绝所有连接),则WebSocket服务器被终止(首先运行onError,然后onClose,然后再次运行onError)。 –

+0

也许是因为你关闭了一个尚未打开的套接字? –

+0

如何检查?如果我们发现,如何拒绝所有关系,那么我将知道如何关闭特定关系,或者关闭除特定关系以外的所有关系...... –

相关问题