我正在编写一个 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 消息 = gson.fromJson(reader,JsonMessage.class);
如何在我的 Java 应用程序中处理这种断开连接并且仍然能够读取 JSON 消息?