저는 PubNub 채널에 연결하고 이벤트를 수신하는 탭을 여는 프로젝트를 만들고 있습니다. 이러한 열린 탭은 관리 탭에 표시되므로 사용자는 연결된 모든 탭을 볼 수 있습니다. 현재 우리는 자신의 존재를 사용하여 연결된 사용자를 확인하고 참여, 탈퇴 및 시간 초과 메시지를 표시하는 메시지도 실행합니다.웹 작업자 또는 유사한 항목으로 창 닫기 이벤트를 처리 할 수 있습니까?
사용자가 탭을 닫으면 채널에 수신 거부 메시지가 표시되지 않으므로 PubNub가 해당 연결에서 제한 시간을 호출하여 관리 탭에서 제거 될 때까지 기다려야합니다. . 나는 그들의 심장 박동 옵션을 훨씬 짧게 조정했지만, 연결이 끊어지면 두 번째까지 더 많이 가질 수있어 정말 좋을 것입니다.
내 생각은 웹 워커 (Web Worker) 또는 이와 유사한 것으로 간단한 탈퇴 메시지를 보내는 데 도움이 될 수 있지만 웹 페이지의 부모 페이지가 사용 가능하지 않으면 웹 작업자가 사용할 수없는 것으로 이해할 수없는 것 같습니다. 그것을 창출 한 것은 닫힌다?
이런 식으로 할 수있는 방법이 있습니까 아니면 시간 제한을 적용하고 시간 제한이 만료 될 때까지 기다리는 관리자 탭을 처리하는 것이 가장 좋습니다.
WebWorker는 옵션 일 수는 있지만 브라우저 의존성이 높습니다. 브라우저 종속성에 대해 걱정하지 않는다면 브라우저의 sendBeacon 또는 onbeforeunload 이벤트에 대한 지원을 통해 수신 거부를 수행 할 수 있습니다. 하지만 PubNub 키에 대한 Presence 추가 기능에서 TCP_FIN을 사용하도록 설정하면 탭을 언로드 할 때 휴가 이벤트가 전송됩니다. 그러나 많은 채널을 구독하는 경우 페이지 언로드 성능 문제가 발생할 수 있으므로주의해야합니다. 도움이되는지, 추가 질문이 있으면 알려주십시오. –
@CraigConover 놀랍습니다! 그게 뭔지 몰랐어요! 고맙습니다! – Jordan
내가 무엇을했는지에 관해 명확히하지 않고있다 - 아름답다! 다행이 당신을 행복하게;) 공식 답변으로 내 의견을 추가. –