SignalEvent | OpenVidu Browser - v2.28.0
// streamCreated 이벤트 처리
mySession.on('streamCreated', async (event) => { // 연결
const subscriber = mySession.subscribe(event.stream, undefined);
setSubscribers((subscribers) => [...subscribers, subscriber]);
// 시그널 보내기 (예: 게임 시작을 알림)
mySession.signal({
data: 'startGame',
type: 'startGame'
});
});
// 시그널 수신 시 게임 시작
mySession.on('signal:startGame', (event) => {
// 시그널을 받으면 게임 시작
startGame();
});
상호 간의 시그널 교환 시
useEffect(() => {
if (session) {
if (mySide === 'USER_ONE') {
setUserOneEmail(localStorage.getItem('email'));
} else if (mySide === 'USER_TWO') {
setUserTwoEmail(localStorage.getItem('email'));
}
session.signal({
data: JSON.stringify({
userOneEmail: userOneEmail,
userTwoEmail: userTwoEmail,
}),
type: 'email',
});
const recieveEmail = (e) => {
try {
const receivedData = JSON.parse(e.data);
let response_userOneEmail = receivedData.userOneEmail;
let response_userTwoEmail = receivedData.userTwoEmail;
if (response_userOneEmail !== null) {
setUserOneEmail(response_userOneEmail);
}
if (response_userTwoEmail !== null) {
setUserTwoEmail(response_userTwoEmail);
}
} catch (error) {
console.error('이메일 정보 수신 중 오류 발생', error);
}
};
session.on('signal:email', recieveEmail);
// eslint-disable-next-line react-hooks/exhaustive-deps
}
}, [mySide]);