java - websocket自动关闭连接

标签 java javascript google-chrome jetty websocket

我正在用 java 构建一个应用程序,它有一个基于 jetty 的嵌入式 websocket 服务器。客户端是谷歌浏览器中默认的 websocket 实现。一切正常,只有在连接关闭一段时间后服务器和客户端之间没有传输时。 我不确定是谁在关闭连接: jetty 服务器还是 chrome 浏览器。

我认为解决方案是每 x 秒发送一条消息,但我愿意接受更好的解决方案。

所以...我的问题是:

  1. 这是 websocket 协议(protocol)需要的东西吗?在这种情况下,chrome 浏览器正在关闭我的连接?

  2. 这是否与 jetty 相关,或多或少与 websocket 协议(protocol)有关?在这种情况下如何在 jetty 禁用它?

  3. 还有问题吗?

谢谢

更新:即使我每秒发送 1 条消息,连接仍然关闭

最佳答案

回答您的第三个问题:您的客户无论如何都希望能够应对临时网络问题,例如假设用户在 session 之间关闭笔记本电脑使其 hibernate ,或者网络只是暂时中断。

解决方案是在 Web 套接字客户端上监听 onclose 事件,当它们发生时,设置客户端超时以重新打开连接,比如一秒钟:

function setupWebSocket(){
    this.ws = new WebSocket('wss://host:port/path');
    this.ws.onerror = ...;
    this.ws.onopen = ...;
    this.ws.onmessage = ...;
    this.ws.onclose = function(){
        setTimeout(setupWebSocket, 1000);
    };
}

关于java - websocket自动关闭连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9056159/

相关文章:

java - 可变长度参数可以替代一维数组吗?

javascript - Jquery从iframe读取父值

javascript - 在 Angular 5 HTML 中将变量添加到对象路径中

javascript - 如何在 Google Chrome 扩展中获取 Node.js 进程的调试目标信息?

Java Sockets 多次连接尝试 - 无法向所有客户端发送数据

java - Hibernate Envers find 方法期间出现 nullpointerException

javascript - SpiderMonkey 是线程安全的是什么意思?

javascript - 在鼠标上输入在 Chrome 中行为不端

google-chrome - 当使用 ShadowDOMv0 的禁用标志打开 chrome 时,开发人员控制台不会打开

java - 如何模拟下游方法调用?