Wifi断开连接的

时间:2016-03-28 02:33:26

标签: android websocket java-websocket

我使用org.java_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()时,我都没有在桌面客户端上收到通知?

此外,我的一个客户是使用Starscreamhttps://github.com/daltoniam/Starscream)的Mac客户端。不确定是否有任何关于我应该注意的事情。

1 个答案:

答案 0 :(得分:0)

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