'ws : // xxx : nn'에 대한 WebSocket 연결 실패 : 핸드 셰이크 응답을 받기 전에 연결이 종료 됨 '오류를 잡는 방법?
port로 시작된 노드 서버가 있고 nn
WebSocket 서비스가 없다고 가정 해 보겠습니다 .
문제는 내 클라이언트가 WebSocket 서비스를이 서버에 연결하려고한다는 것입니다.
분명히 서버 연결에 실패해야합니다.
하지만이 오류를 잡을 수 없었습니다. 클라이언트 코드는 다음과 같습니다.
try {
this.ws = new WebSocket('ws://xxx:nn');
} catch ( e ) {
fallback();
console.warn(e);
}
내 기대는 fallback
연결이 실패하는 동안 메서드가 호출되지만 실제로는 위의 오류가 잡히지 않습니다.try...catch
누구든지 내 사용 사례에서 오류를 잡는 방법을 알고 있습니까?
websocket 객체의 onError 콜백에 등록 할 수 있습니다.
exampleSocket.onerror=function(event){
console.log("Error");
}
다음 예를 참조 할 수 있습니다. 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();
달콤한 바이올린 : https://jsfiddle.net/lamarant/ry0ty52n/
연결이 성공하면 readyState 속성이 1로 설정되므로 연결 상태를 확인하는 데 사용할 수 있습니다. 소켓 연결은 일반적으로 1 초 미만이 걸리므로 안전하게 3 초 간격을두고 연결 상태를 확인할 수 있습니다.
다음은 코드입니다.
this.ws = new WebSocket('ws://xxx:nn');
setTimeout(() => {
if (this.ws.readyState !== 1) {
alert("Problem connection , kindly contact system admin .");
}
}, 3000);
the above answers cannot be correct. You want to treat it as an error. But that message is more of a warning/info that shows when the following happens.
WebSocketTransport.prototype.close = function() {
debug('close');
var ws = this.ws;
this._cleanup();
if (ws) {
ws.close();
}
};
correct should be:
exampleSocket.onclose = async (event) => {
console.error(event);
//do what you want
}
ReferenceURL : https://stackoverflow.com/questions/25779831/how-to-catch-websocket-connection-to-ws-xxxnn-failed-connection-closed-be
'programing' 카테고리의 다른 글
CSS 너비 : calc (100 % -100px); (0) | 2021.01.17 |
---|---|
OpenGL ES 2.0 다중 프로그램 또는 다중 셰이더 또는 무엇입니까? (0) | 2021.01.16 |
단일 어셈블리 다국어 Windows Forms 배포 (ILMerge 및 위성 어셈블리 / 지역화)-가능합니까? (0) | 2021.01.16 |
Python 코드를 Arduino (Uno)에 "컴파일"하는 방법이 있습니까? (0) | 2021.01.16 |
printf에 대한 h 및 hh 수정 자의 목적은 무엇입니까? (0) | 2021.01.16 |