From 478d9b2eefe1ca3ce20f9f71ee1cbb3414eba33e Mon Sep 17 00:00:00 2001 From: Nick Mowen Date: Fri, 21 Oct 2022 09:44:05 -0600 Subject: [PATCH] Close websocket on changing camera --- web/src/components/WebRtcPlayer.jsx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/web/src/components/WebRtcPlayer.jsx b/web/src/components/WebRtcPlayer.jsx index d2b9d8872..4c8c0995b 100644 --- a/web/src/components/WebRtcPlayer.jsx +++ b/web/src/components/WebRtcPlayer.jsx @@ -1,11 +1,11 @@ import { h } from 'preact'; import { baseUrl } from '../api/baseUrl'; -import { useMemo } from 'preact/hooks'; +import { useEffect } from 'preact/hooks'; export default function WebRtcPlayer({ camera, width, height }) { const url = `${baseUrl.replace(/^http/, 'ws')}go2rtc/api/ws?src=${camera}`; - useMemo(() => { + useEffect(() => { const ws = new WebSocket(url); ws.onopen = () => { pc.createOffer().then(offer => { @@ -56,7 +56,11 @@ export default function WebRtcPlayer({ camera, width, height }) { // Safari don't support "offerToReceiveVideo" // so need to create transeivers manually pc.addTransceiver('video', {direction: 'recvonly'}); - pc.addTransceiver('audio', {direction: 'recvonly'}); + pc.addTransceiver('audio', { direction: 'recvonly' }); + + return () => { + ws.close(); + }; }, [url]); return (