일단 사용자가 로그 아웃하면 서버 - 보낸 - 이벤트를 프로그래밍 방식으로 닫고 싶습니다. 그러나 사용자가 다시 로그인 할 때 브라우저는 SSE 연결의 한계에 도달했기 때문에 더 이상 https 요청을 실행하지 않습니다.`close() '를 호출 함에도 불구하고 서버 - 보낸 이벤트 연결이 닫히지 않았습니다.
나는 이벤트 청취에 EventSource
을 사용하고 있습니다.
var eventSource;
function onChange(accountId:string, callback){
var url = "...";
eventSource = new EventSource(url);
if(eventSource){
eventSource.addEventListener("put", callback);
}
}
function close(){
this.eventSource.close()
}
내가 브라우저의 네트워크 연결을 관찰했다, 나는 연결이 여전히 존재 실현 :
이것은 내 연결을 닫는 방법이다. Timing
의 출력은 Caution: request is not finished yet!
입니다. 제한된 연결 수 때문에 다음 이벤트 스트림이 정지합니다.
EventSource
이 이와 같이 작동하도록 설계되어 있는지 확실하지 않지만 많은 사람들이 동일한 시나리오를 사용하지 않기 때문에이 문제와 관련된 내용을 찾을 수 없습니다.
브라우저 (크롬)에서 페이지를 새로 고침 할 때마다 기존의 모든 연결이 닫히지 만 문제를 해결하기 위해 페이지를 다시로드하지 않으려합니다.
'this'가 정확한 범위를 가리키는 지 확인하고 'eventSource'를 닫은 후에'eventSource'를 설정했지만 연결은 계속 유지됩니다 .. Btw, typescript (ionic3) 및 npm을 사용하여'eventSource'를 설치했는데 효과가 있습니까? –
@MerveSahin 처음 두 개를 없애 버린 것처럼 보이지만 (여기서는 선택 사항이고 쉽게 잘못 될 수 있으므로'this '를 제거 하겠지만),'es'로만 객체의 이름을 바꾸려고 했습니까? 나는 ionic3으로 충분히 익숙하지 않다. npm으로 설치되었다고 할 때, 백엔드 또는 프런트 엔드를 의미합니까? 브라우저 기본 제공 EventSource에 대한 래퍼라면 문제가 될 수 있습니까? –