-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Refactor] Context API를 통한 mediasoup 관련 로직 분리 #273
Conversation
🎨 스토리북 확인하기
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
context로 상태를 빼니 훨씬 가독성이 좋아진 것 같습니다 👍👍👍👍
그리고 기존처럼 consumerstream과 producerstream으로 나누는게 아니라 localstream과 remotestream을 기준으로 hook을 나눈것도 더 적합한듯합니다.
고생정말 많으셨습니다!
checkConsumerByProducerId(producerId: string) { | ||
const consumer = Array.from(this.consumers.values()).find( | ||
(consumer) => consumer.producerId === producerId | ||
); | ||
|
||
return !Boolean(consumer); | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍🏿
관련 이슈 번호
작업 내용
고민과 학습내용
초기 생각한 구조는 다음과 같습니다.
기존 useState + useRef 구조와 비교하면 다음과 같습니다.
useReducer
를 통해 구현을 완료하고 테스트를 진행하던 와중 우선적으로 실행한dispatch
가 선언된 함수의 평가 이후 실행되는 것을 확인했습니다.dispatch
나setState
에 경우 상태 업데이트 즉시 업데이트된 상태 값을 참조할 수 없으며 React 렌더링 사이클에 따라useEffect
를 통해 해당 상태를 트리거하는 방식을 사용해야 합니다.socket
과reducer
를 함께 사용할 경우 해당 함수의 변경이 어디서 이루어졌는지 제대로 확인할 수 없어 기존useReducer
를 걷어내고,useRef
+useState
를 사용하는 것으로 변경하였습니다.useRef
에 경우setState
나dispatch
와 달리 상태가 변경되는 과정을 기다릴 필요 없이, 동일한 함수 레벨에서 즉시 최신 값을 참조할 수 있습니다.따라서, UI에 실제로 반영되지 않는
socket
,transport
,producer
등을 ref에 등록하고remoteStream
같이 실제로 UI에 반영되는 상태는state
에 저장하여 로직을 구현했습니다.