如何防止Tyrus websocket客户端重新连接逻辑导致多个打开的套接字?

时间:2015-07-02 16:20:48

标签: java websocket tyrus

我已经看到这种行为偶尔发生,我无法一致地重现它。但似乎Tyrus(v1.10)中的重新连接逻辑可能导致同一客户端有多个打开的套接字/线程。

导致多个套接字连接的过程如下所示:

  1. 客户端打开Web服务器套接字。
  2. 服务器重新启动/短时间不可用。
  3. 客户开始尝试重新连接。
  4. 服务器再次可用。
  5. 两个+线程获取服务器的活动Web套接字。
  6. 我的重新连接处理程序如下所示:

    @Override
        public boolean onDisconnect(CloseReason reason)
        {
            LOG.info("Reconnect handler captured close event. Reason: " + reason);
            if(!reconnect)
            {
                LOG.info("Not attempting to reconnect. Closing the latch");
                return false;
            }
            else
            {
                LOG.info("Attempting to reconnect.");
                return true; // reconnect
            }
        }
    

    我可以尝试在服务器端解决这个问题,并验证每个连接对于客户端是唯一的,但是我必须同步到一个线程以获得新连接,这甚至不是解决负载均衡服务器的问题。

0 个答案:

没有答案