java - jetty 9,websockets 和关闭服务器端的 websocket 连接

标签 java websocket jetty embedded-jetty

我有一个使用基于 jetty 8 的 websocket 服务器的应用程序。一切正常,当用户刷新页面、关闭页面或移动到另一个页面时,连接关闭,并且在服务器端 onClose事件被触发。

我刚搬到 9 号 jetty ,在 Firefox 中一切正常(刷新时连接关闭),但在 Chrome 或 Opera 上则不然。我什至关闭了浏览器,但没有触发 onClose 事件。

我知道 jetty 9 只支持最新的 websockets 协议(protocol)版本,我想知道当用户刷新页面时浏览器是否正在向服务器发送一些消息,以及如何在 jetty 上处理这个或者我是否必须在这个例子中用 javascript 处理这个:Closing WebSocket correctly (HTML5, Javascript)使用 window.onbeforeunload ?

如果我可以处理服务器端的所有工作,我会更喜欢。谢谢

更新 如果我使用 ws.close() 关闭来自客户端的连接,一切正常。

最佳答案

Jetty 9.0.0 中存在一些关闭和断开连接检测错误

  • 406449 - 未检测到 session 断开
  • 404991 - WebSocketCloseTest 虚假地失败

这两个最近都已修复并在 Jetty 9.0.3.v20130506 中交付请试试那个版本。

关于java - jetty 9,websockets 和关闭服务器端的 websocket 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16227683/

相关文章:

java - 在通用 Collection 方法中发送 ArrayList

java - JButtons 和 JLabels 没有出现

java - 您认为哪些静态分析器在 Java 代码上运行很重要,为什么?

java - 如何检查 WebSocket 是否已连接

session - 每次刷新页面都会创建一个新的JSESSIONID,但并非所有浏览器都会创建

java - Jetty、JBoss 和 TomCat 上的可部署应用程序

java - org.apache.jasper.el.E​​LContextImpl 无法转换为 org.apache.jasper.runtime.ELContextImpl

java - 是否可以在 Google Appengine 上使用 JDO 进行批量更新?

multithreading - 在与托管 bean 分开运行的线程中访问 OmniFaces PushContext 实例

python - 使用 websocket 连接时,对用户进行身份验证的可能方法是什么?