如何在客户端关闭电源或在网络中丢失互联网连接时检测客户端在服务器上的断开连接

时间:2017-06-29 02:31:53

标签: java network-programming netty

我希望在客户端断电或丢失互联网连接并从列表客户端删除时检测客户端在服务器上的断开连接。我可以这样做吗?

我正在尝试一些问题,但它无法正常工作。 这是我的代码:

final ChannelFuture cf = chc.channel().writeAndFlush(new TextWebSocketFrame(dataSend));
            cf.addListener(new GenericFutureListener<Future<? super Void>>() {

                public void operationComplete(Future<? super Void> f) throws Exception {

                    if (!cf.isSuccess()) {

                        ServerHandler.agentChannelList.get(tranfer.getUsername()).remove(chc);
                        if (ServerHandler.agentChannelList.get(tranfer.getUsername()).isEmpty()) {
                            if (ServerHandler.agentOnlineQueue.containsKey(tranfer.getPage_id())) {
                                ServerHandler.agentOnlineQueue.get(tranfer.getPage_id()).remove(tranfer.getUsername());
                            }
                        }
                    }
                }

            });

1 个答案:

答案 0 :(得分:2)

唯一的“真正”解决方案是在协议中实现类似“ping / pong”的功能。基本上你写入远程对等体,如果写入失败或远程对等体没有响应,你会认为它已经死了。