我正在编写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消息?