How*_*ard 54 javascript websocket
假设我有一个以端口启动的节点服务器nn,并且没有任何WebSocket服务.
问题是我的客户端尝试将WebSocket服务连接到此服务器.
显然,它应该无法连接到服务器.
但我无法捕捉到这个错误,我的客户端代码如下:
try {
this.ws = new WebSocket('ws://xxx:nn');
} catch ( e ) {
fallback();
console.warn(e);
}
Run Code Online (Sandbox Code Playgroud)
我的期望是fallback在连接失败时调用方法,但实际上我可以通过上面捕获它的错误try...catch
有谁知道如何在我的用例中捕获错误?
shi*_*mar 11
您可以注册websocket对象的onError回调
exampleSocket.onerror=function(event){
console.log("Error");
}
Run Code Online (Sandbox Code Playgroud)
您可以参考以下示例. http://jsfiddle.net/g28yuymv/1/
捕捉错误示例 http://jsfiddle.net/g28yuymv/4/
查看HTML5 WebSockets规范,您可以将值传递给close()方法.然后在onclose()事件侦听器上,您可以检查该值.这使您有机会为不同的断开连接方案设置处理程序,然后将其他所有操作作为一般错误处理.
https://developer.mozilla.org/en-US/docs/Web/API/WebSocket#close()
var _websocket;
function wsConnect() {
if (_websocket) {
_websocket.close(3001);
} else {
_websocket = new WebSocket("wss://echo.websocket.org1");
_websocket.onopen = function() {
console.log('connected');
};
_websocket.onmessage = function(msg) {
console.log(msg);
};
_websocket.onclose = function(evt) {
if (evt.code == 3001) {
console.log('ws closed');
_websocket = null;
} else {
_websocket = null;
console.log('ws connection error');
}
};
_websocket.onerror = function(evt) {
if (_websocket.readyState == 1) {
console.log('ws normal error: ' + evt.type);
}
};
}
}
wsConnect();
Run Code Online (Sandbox Code Playgroud)
甜美的小提琴:https://jsfiddle.net/lamarant/ry0ty52n/
| 归档时间: |
|
| 查看次数: |
45889 次 |
| 最近记录: |