私は Chrome パッケージ化されたアプリケーションを作成し、chrome.sockets
API を使用しています。バックエンドは Java で書かれています。
Chrome アプリでソケットを閉じてステータスを確認すると、パッケージ化されたアプリに関する限り、切断されたと表示されます。
chrome.socket.disconnect(this.getSocketId());
chrome.socket.destroy(this.getSocketId());
ただし、私の Java バックエンドはエラーをスローせず、読み取り時にブロックされます。Gson
問題の一部だと思うライブラリを介して読んでいます。何らかの理由で、このインスタンスではソケットのクローズを処理できません。私のテスト Java クライアントは正常に動作し、正常に切断できるため、これは少し奇妙に感じます。
InputStreamReader.read()
私が結果を読んだ場合-1
、ドキュメントによるとストリームの終わりを示しているでしょう(ソケットが閉じていることを確実に知っていることを意味すると思います)。
JsonReader リーダー = 新しい JsonReader(新しい InputStreamReader(socket.getInputStream(), "UTF-8"))
// この呼び出しでブロックします
JsonMessage メッセージ = gson.fromJson(reader,JsonMessage.class);
Java アプリケーションでこの切断を処理し、引き続き JSON メッセージを読み取るにはどうすればよいですか?