1

我正在编写一个 Chrome 打包应用程序并使用chrome.socketsAPI。后端是用 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 消息?

4

0 回答 0