Android Java web套接字问题与Wifi断开连接

Android Java web套接字问题与Wifi断开连接,android,websocket,java-websocket,Android,Websocket,Java Websocket,我正在使用org.java\u websocket.websocket在我的Android设备上创建一个websocket服务器。我有桌面上的客户端连接到它 当WiFi不可用时,我想关闭服务器并通知客户端断开连接。当我有一个如下所示的广播接收器时,它会关闭服务器,但客户端很长时间没有意识到这一点。这有什么原因吗 public void onReceive(Context context, Intent intent) { ConnectivityManager conMngr = (Co

我正在使用
org.java\u websocket.websocket
在我的Android设备上创建一个websocket服务器。我有桌面上的客户端连接到它

当WiFi不可用时,我想关闭服务器并通知客户端断开连接。当我有一个如下所示的广播接收器时,它会关闭服务器,但客户端很长时间没有意识到这一点。这有什么原因吗

public void onReceive(Context context, Intent intent) {
    ConnectivityManager conMngr = (ConnectivityManager)context.getSystemService(context.CONNECTIVITY_SERVICE);
    NetworkInfo wifi = conMngr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    NetworkInfo mobile = conMngr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

    // Perform operations here to shut down web socket server
}
基本上,当Wifi不可用时,我希望能够关闭服务器并通知客户端。为什么当我对每个连接执行
conn.close()
操作时,我在桌面客户端上都没有收到通知


另外,我的一个客户机是使用红蜘蛛的Mac客户机。不确定是否有什么我应该知道的。

如果您的WebSocket服务器完全符合IETF规范,它应该理解WS-ping/pong控制帧。如果没有(并且您的客户端代码没有),那么您需要调查您的TCP超时设置。TCP超时可能长达数分钟。Recall TCP设计用于在连接失败时重试。

如果您的WebSocket服务器完全符合IETF规范,它应该理解WS-ping/pong控制帧。如果没有(并且您的客户端代码没有),那么您需要调查您的TCP超时设置。TCP超时可能长达数分钟。Recall TCP设计用于在连接失败时重试