【问题标题】:Java web socket issue with Wifi disconnectWifi断开连接的Java Web套接字问题
【发布时间】:2016-03-28 02:33:26
【问题描述】:

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

另外,我的一个客户是使用 Starscream (https://github.com/daltoniam/Starscream) 的 Mac 客户端。不知道有什么我应该注意的。

【问题讨论】:

    标签: android websocket java-websocket


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-02
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 2019-03-05
      • 2014-10-09
      • 2016-02-09
      • 2014-03-01
      相关资源
      最近更新 更多