我正在编写Chrome打包应用程序并使用 chrome.sockets API . 后端是用Java编写的 .

当我在我的Chrome应用中关闭套接字并检查状态时,它表示就我的打包应用而言已断开连接 .

chrome.socket.disconnect(this.getSocketId());
chrome.socket.destroy(this.getSocketId());

但是我的Java后端不会抛出错误并且在读取时被阻止 . 我正在阅读 Gson 库,我认为这是问题的一部分 . 无论出于何种原因,在这种情况下它无法处理套接字关闭 . 我发现这有点奇怪,因为我的测试Java客户端工作正常并且能够断开连接 .

如果我通过 InputStreamReader.read() 读取结果将是 -1 ,根据文档指示流的结束(我认为这意味着它确定套接字已关闭) .

JsonReader reader = new JsonReader(new InputStreamReader(socket.getInputStream(),“UTF-8”))//它在此调用时阻塞JsonMessage message = gson.fromJson(reader,JsonMessage.class);

如何在Java应用程序中处理此断开连接并仍然能够读取JSON消息?