【发布时间】:2017-05-04 20:49:14
【问题描述】:
我在 Chrome 扩展中有一些 Javascript,每 3 秒运行一次,并尝试连接到本地 WebSocket 服务器。
setInterval(attemptConnection, 3000);
function attemptConnection() {
try {
var exampleSocket = new WebSocket("ws://localhost:8080");
exampleSocket.onmessage = function (event) {
var JsonObject = JSON.parse(event.data);
document.getElementById(JsonObject.elementTagValue).setAttribute("value", JsonObject.valueToSet);
}
}
catch(err) {
//do something here
}
我只希望在特定时间点运行本地 WebSocket 服务器。如果建立连接,WebSocket 服务器将发送一些 javascript 将立即使用的 JSON 数据。
当我进入开发人员工具时,我看到我在控制台中多次收到 ERR_CONNECTION_REFUSED,因为在该端点显然没有任何内容,这是预期的行为。有没有办法抑制这些控制台输出或更好地处理这个问题?
编辑 - 更新了代码,我仍然得到错误输出到控制台
setInterval(attemptConnection, 3000);
function attemptConnection() {
var exampleSocket = new WebSocket("ws://localhost:8080");
exampleSocket.onmessage = function (event) {
var JsonObject = JSON.parse(event.data);
document.getElementById(JsonObject.elementTagValue).setAttribute("value", JsonObject.valueToSet);
exampleSocket.send(event.data);
exampleSocket.onerror = function () {
//do nothing
}
}
}
【问题讨论】:
-
如果你使用
exampleSocket.onerror也许可以? -
try/catch不起作用,因为错误是异步发生的。 -
网络错误总是被记录到控制台,无论它们是否在 JS 中处理。不过,您可以通过 devtools 设置隐藏它们
-
是否存在大量错误淹没控制台的风险?如果我长时间打开浏览器,我希望不会导致 Chrome 崩溃。
-
半生不熟的想法:有没有办法在调用
new WebSocket('...')之前检查连接是否成功?我还没有研究过。
标签: javascript google-chrome-extension websocket