nginx 프 록 시 웹 소켓 시 자동 으로 연결 끊 기
3352 단어 전단
1. nginx 가 역방향 대 리 를 설정 할 때 proxy 가 있 습 니 다.read_timeout 항목, 연결 성공 후백 엔 드 서버 응답 대기 시간사실 백 엔 드 줄 에 들 어가 서 처 리 를 기다 리 고 있 습 니 다 (백 엔 드 서버 처리 요청 시간 이 라 고도 할 수 있 습 니 다). 기본 60 초 입 니 다. socket 프로 토 콜 연결 시간 만 고려 하고 싶다 면 이 설정 의 시간 을 길 게 조절 할 수 있 습 니 다 ~
그리고 두 개의 설정 항목 이 있 습 니 다:
proxy_connect_timeout :백 엔 드 서버 연결 시간 초과악 수 를 하 며 응답 시간 초과 기다 리 기;
proxy_send_timeout :백 엔 드 서버 데이터 전송 시간정 해진 시간 안에 백 엔 드 서버 가 모든 데 이 터 를 전송 해 야 한 다 는 것 이다.
프로 토 콜 연결 기간 에 다른 오류 가 발생 하지 않도록 문자 그대로 길 게 조절 할 수 있 습 니 다!
2. 상기 항목 을 설정 한 후 설정 한 시간 범위 내 에서 자동 으로 끊 기 는 오류 가 발생 하지 않 습 니 다. 그러나 이 시간 대 에 어떠한 통신 도 하지 않 으 면 설정 한 시간 범위 에 도달 한 후에 자동 으로 연결 을 끊 습 니 다. 해결 방법 은 설정 시간 범위 가 도착 하기 전에 심장 박동 가방 을 새로 고침 하고 다시 읽 는 시간 입 니 다.(이 방법 으로 프로 토 콜 연결 상황 을 다시 연결 하고 끊 으 면 다시 연결 하 는 것 입 니 다) 코드
이 프로젝트 는 백 스테이지 SpringMVC + 프런트 amazeUI 프레임 워 크 를 사용 하여 이 루어 졌 으 니 참고 할 때 변 함 이 없습니다 ~ ~ ~
var lockReconnect = false;
var ws = null;
var url = "ws://"+location.host+"/chatServer/${userid}";
createWebSocket(url);
function createWebSocket(url){
try{
if("WebSocket" in window){
ws = new WebSocket(url);
}else if("MozWebSocket" in window){
ws = new MozWebSocket(url);
}else{
layer.msg(" websocket , 、 , IE10 ,360 , !", { offset: 0});
}
initEventHandle();
}catch(e){
reconnect(url);
console.log(e);
}
}
function initEventHandle(){
ws.onopen = function (evt) {
heartCheck.reset().start();
layer.msg(" ", { offset: 0});
};
ws.onmessage = function (evt) {
heartCheck.reset().start();
analysisMessage(evt.data); // , ,
};
ws.onerror = function (evt) {
reconnect(url);
layer.msg(" ", { offset: 0});
};
ws.onclose = function (evt) {
reconnect(url);
layer.msg(" ," + evt.reason, { offset: 0});
};
}
// , , websocket , ,server 。
window.onbeforeunload = function() {
ws.close();
}
function reconnect(url) {
if(lockReconnect) return;
lockReconnect = true;
setTimeout(function () {
// ,
createWebSocket(url);
lockReconnect = false;
}, 2000);
}
//
var heartCheck = {
timeout: 240000, // ,proxy_read_timeout
timeoutObj: null,
serverTimeoutObj: null,
reset: function(){
clearTimeout(this.timeoutObj);
clearTimeout(this.serverTimeoutObj);
return this;
},
start: function(){
var self = this;
this.serverTimeoutObj = setTimeout(function(){
ws.send("ping");
self.serverTimeoutObj = setTimeout(function(){
ws.close();
}, self.timeout)
}, this.timeout)
}
}
중간 에 구체 적 인 업무 논리 에 당신들 의 것 을 쓰 면 됩 니 다!
테스트 를 통 해 이 방법 은 가능 합 니 다. 로 컬 에서 네트워크 를 통 해 natapp 과 nginx 를 관통 하면 자동 으로 연결 이 끊 기지 않 습 니 다 ~
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
전단 자동화 워 크 플 로 의 hooks예 를 들 어 우 리 는 git commt 전에 eslint 코드 검사, npm install 전에 프로젝트 의존 도 를 검사 하고 싶 습 니 다.전형 적 인 상황 에서 각종 도 구 는 특정한 동작 이 발생 할 때 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.