2016-03-28 4 views
1

私はorg.java_websocket.WebSocketを使用して、AndroidデバイスにWebsocketサーバーを作成しています。私はそれに接続されたデスクトップ上のクライアントを持っています。WifiでのJava Webソケットの問題

私は、WiFiが利用できないときに、サーバーをシャットダウンし、切断をクライアントに通知したいと考えています。私は以下のような放送受信機を持っていると、サーバをシャットダウンしますが、クライアントはそれを非常に長い間認識しません。これには何らかの理由がありますか?無線LANが利用できないとき

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 
} 

は基本的に、私は通知するサーバとクライアントをシャットダウンできるようにしたいです。なぜ私は接続ごとにconn.close()を実行するとデスクトップクライアントで通知を受け取ることができないのですか?

私のクライアントの1人は、Starscreamhttps://github.com/daltoniam/Starscream)を使用するMacクライアントです。私が知っておくべきことがあるかどうかわからない。

答えて

0

WebSocketサーバがIETF仕様に完全に準拠している場合は、WS ping/pong制御フレームを理解する必要があります。そうでない場合(およびクライアントコードがそうでない場合)は、TCPタイムアウト設定を調べる必要があります。 TCPタイムアウトは数分である可能性があります。リコールTCPは、接続が失敗したときに再試行するように設計されています。