尝试与服务器建立连接时是否可以取消WebSocket连接?
让我们说用户通知它是一个拼写错误的主机,并希望在onerror出现之前取消建立连接的请求,如
失败:连接建立错误:net :: ERR_CONNECTION_REFUSED
我试图调用close,但这并不取消请求。我甚至在控制台发出警告:
失败:在建立连接之前WebSocket已关闭。
答案 0 :(得分:2)
不幸的是,使用var description = [
"http://placehold.it/300x300",
"http://placehold.it/200x200",
"http://placehold.it/100x100"
];
var size = description.length
var x = Math.floor(size*Math.random())
$('.item img').each(function() {
if($("img").hasClass("people")) {
$(this).attr("src",description[x]);
}
});
无法实现这一点,而且似乎根本无法实现。
此外,与XMLHttpRequest不同,WebSocket没有close()
方法来实现此目的。
WebSocket specs没有提及这样做的任何方法,将对象设置为abort
并不起作用。
以下示例通过将WebSocket对象设置为null
来说明这一点,但仍会收到连接错误消息。
null
答案 1 :(得分:0)
close()方法仅终止已建立的连接。 对于您的情况,您可以使用将websocket句柄指定为null来停止它。
webSocketHanle = null;
通过此分配,您的回调将不会被激活。
但请注意,从服务器获取响应的过程非常快。
答案 2 :(得分:0)
自该问题的前两个答案发布以来,~matches.any(axis=1)
的行为似乎已经改变。
WebSocket.close()方法关闭WebSocket连接或连接尝试(如果有)。如果连接已经关闭,则此方法不执行任何操作。
因此,您可以这样做:
close()
如果readyState尚未切换到var ws = new WebSocket('ws://unknownhost.local');
setTimeout(() => {
if (ws.readyState == WebSocket.CONNECTING) {
ws.close();
console.log("Connection cancelled.");
}
}, 1000);
,这将取消连接尝试。
我尝试了这个,它似乎可以工作(在Firefox上测试)。