我希望 Java 聊天小程序的用户在关闭浏览器窗口时自动注销。
我目前使用以下内容:
public void destroy() {
sendLogoutMessage();
}
然而,这只适用于 3/4 的时间(可能是由于网络延迟)。
聊天小程序 ping 服务器并在 90 秒后将它们注销(这允许它们由于任何互联网问题而重新连接) - 所以它们最终会被删除,但是我想要一种更好地捕捉关闭事件的方法。
我认为您的代码在 100% 的情况下无法正常工作,因为它是在不等待并关闭包括打开的网络连接在内的所有内容的销毁方法中调用的。因此,有时如果网络速度较慢,小程序及其输出流在将注销消息发送到服务器之前被终止。
如果我的理论是正确的,您可能可以检查一下。
此外,我建议以下内容。
该解决方案应该是您现有解决方案的补充,其工作时间为 3/4。
我希望这有帮助。祝你好运。