- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现一个 WebSocket 连接,当我的网站关闭时,它会尝试每 X 秒重新连接一次,直到它再次重新上线。到目前为止我已经得到了这个:
var onCloseHandler = function() {
reconnect();
}
function reconnect() {
try {
console.log('Connection lost, trying to reconnect...');
socket = new WebSocket(myUrl);
socket.onerror = onErrorHandler;
socket.onmessage = onMessageHandler;
socket.onopen = onOpenHandler;
socket.onclose = onCloseHandler;
} catch (err) {
setTimeout(function() {
reconnect();
}, 1000);
}
}
我的问题是,当 onCloseHandler
第一次被调用(即当我的网站突然离线时),new WebSocket()
调用抛出下一个异常:
WebSocket connection to '<here_goes_my_url>' failed: Error during WebSocket handshake: Unexpected response code: 503
并且没有办法捕获它(在 X 秒内再次调用相同的函数)或使执行移至下一行。它只是崩溃,通过浏览器控制台显示异常,并停止执行。
有什么办法可以捕获这个异常吗?
提前致谢。
编辑:为了明确起见,onclose
事件不会被第二次调用,我已经检查过了。此外,异常(exception)情况(因此站点离线时无法连接)也没有问题;我正在寻找的是一种检测它并将执行驱动到 setTimeout
的方法在catch
block 。
最佳答案
我最终使用了这种方法:
function reconnect() {
console.log('Connection lost, trying to reconnect...');
$.ajax({
url: dummy_http_url_on_the_same_server
success: function() {
//Server is back online
socket = new WebSocket(myUrl);
socket.onerror = onErrorHandler;
socket.onmessage = onMessageHandler;
socket.onopen = onOpenHandler;
socket.onclose = onCloseHandler;
},
error: function() {
//Server is still down
setTimeout(function() {
reconnect();
}, 1000);
}
});
}
由于 Ajax 调用有一个错误处理程序,因此我使用它们每 X 秒检查一次(在本例中为每 1 秒;在我的应用程序中是一个随机数,以避免所有客户端同时连接)如果我的服务器是重新上线。当它出现时,我会实例化 websocket,并确定当服务器再次启动时它不会抛出异常。
不完全是我希望找到的,但至少它有效。
关于javascript - 捕获WebSocket异常: "Error during WebSocket handshake: Unexpected response code: 503",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32462133/
我正在从不同来源获取新闻提要并添加到数据库,但我遇到异常 Error: Cannot enqueue Handshake after already enqueuing a Handshake. at
嘿,大家好,我只是想制作一个简单的表单,将数据发送到 mySQL 数据库。我的问题是提交后我无法再提交另一份。它只允许我提交表单一次,然后在第二次提交后,我收到此错误“错误:在已经排队握手后无法排队握
我正在尝试将 VisualVM 连接到远程 JMX。 IntelliJ 可以轻松连接,但 VisualVM 失败并在日志输出中显示以下内容: Listening for transport dt_so
我每 5 秒查询一个表并向用户显示。我使用的是mysql 8。应用程序是nodejs。 var con = mysql.createConnection({ host: "localhost",
我正在尝试创建两个函数,一个从 SQL 数据库检索对象,另一个将对象保存到同一个 SQL 数据库。我使用 node.js 和 mysql 来执行此操作。我有两个函数,fetchEmployee 和 E
我正在尝试通过运行命令 ./mvnw compile quarkus:dev 来调试基本的 Quarkus 应用程序在 IntelliJ 上(如 Quarkus 文档中所述)并且它似乎运行正常(给我以
我正在开发一个由 IIS 10 托管的 .Net Core (3.1) Web 应用程序。当我尝试在本地主机上使用 SignalR 时,我能够完全正常连接并从后端接收消息,但是在我将其发布到 IIS
我最近从 AWS ELB 切换到 HAProxy。我正在负载均衡器 (HAProxy 1.5dev19) 上终止 SSL。 自切换以来,我不断在 HAProxy 日志中收到一些 SSL 连接错误(占请
我编写了一个系统,可以自动在 Microsoft Azure 上部署 VM,在上面安装 Sql Server,然后针对新安装的服务器执行 .sql 脚本以初始化环境。周五,这一切都按预期进行。今天,我
我尝试使用 Hyperledger 版本 2.0.0 将我的 Golang 后端连接到正在运行的 Hyperledger 网络... 我在运行“docker-compose up”时看到这个 Serv
我在安装我们的内部产品时遇到 SSL 配置问题。安装在jboss-eap-6.1.上,使用java-1.7.0-openjdk-1.7.0.85.x86_64 日志说: 16:28:11,685 DE
我做到了 import requests url = "https://randomuser.me/api/" data = requests.get(url).json() print data 我
我正在运行为 HTTP/2 客户端提供的代码 Jetty https://github.com/eclipse/jetty.project/blob/master/jetty-http2/http2-
我需要在使用命名管道与其他进程通信的小型 Linux 程序中实现握手类型协议(protocol)。我已经在使用命名管道时搜索了握手类型协议(protocol)的一般实现模式,但我无法打开任何东西...
我安装了 Docker 版本“Docker 版本 19.03.8,构建 afacb8b”,当我尝试使用 docker pull 命令时,如“docker pull mcr.microsoft.com/
我正在使用 python asynchat 来实现网络协议(protocol)。在连接时,我需要发送命令,服务器通过 session 进行应答。 我的主要问题是我需要等待直到收到 session 响应
握手完成后,我在握手时调用 getPeerCertificates() (socket.getHandshakeSession()) 我正在使用 setNeedClientAuth(true)在服务器
我在 logstash-forward 和 logstash 之间有问题,我已经正确安装了 SSL 证书,但是我有这个错误: Failed to tls handshake with 111.111.
本文整理了Java中us.ihmc.robotDataLogger.handshake.YoVariableHandshakeParser类的一些代码示例,展示了YoVariableHandshake
我是 R 语言的新手 并且正在使用 RConnection 在 java 中尝试一个简单的程序,但它给出了这个异常 org.rosuda.REngine.Rserve.RserveException:
我是一名优秀的程序员,十分优秀!