Skip to content

Commit 754d4ca

Browse files
authored
refactor: 사용하지 않는 코드 삭제 (#392)
1 parent 2d32ee1 commit 754d4ca

File tree

4 files changed

+72
-148
lines changed

4 files changed

+72
-148
lines changed

client/src/components/MeetingMediaBar/index.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import { useEffect, useState } from 'react';
22
import useSocketContext from 'src/hooks/context/useSocketContext';
33
import {
44
MeetingMediaStream,
5-
useMeetingMediaStreamsV2,
6-
} from 'src/hooks/useMeetingMediaStreamsV2';
5+
useMeetingMediaStreams,
6+
} from 'src/hooks/useMeetingMediaStreams';
77

88
import MeetingMedia from './MeetingMedia';
99
import StreamButton from './StreamButton';
@@ -12,7 +12,7 @@ import style from './style.module.scss';
1212
function MeetingMediaBar() {
1313
const { workspaceSocket: socket } = useSocketContext();
1414
const [streams, setLocalAudio, setLocalVideo] =
15-
useMeetingMediaStreamsV2(socket);
15+
useMeetingMediaStreams(socket);
1616

1717
const [isMicOn, setIsMicOn] = useState(true);
1818
const [isCamOn, setIsCamOn] = useState(true);
Lines changed: 69 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,59 @@
1-
// DEPRECATED.
2-
// use 'useMeetingMediaStreamsV2' instead
3-
41
import { useEffect, useState } from 'react';
5-
import { Socket } from 'socket.io-client';
2+
import { Socket, io } from 'socket.io-client';
63
import { STUN_SERVER } from 'src/constants/rtc';
74
import RTC from 'src/utils/rtc';
8-
import { setTrack, TrackKind } from 'src/utils/trackSetter';
5+
import { setTrack } from 'src/utils/trackSetter';
6+
7+
export interface MeetingMediaStream {
8+
stream: MediaStream;
9+
id: string;
10+
type: 'local' | 'remote';
11+
audioOn: boolean;
12+
videoOn: boolean;
13+
}
14+
15+
export type SetLocalAudio = (audioOn: boolean) => void;
16+
export type SetLocalVideo = (videoOn: boolean) => void;
917

1018
export function useMeetingMediaStreams(
1119
socket: Socket,
12-
): [Map<string, MediaStream>, (kind: TrackKind, turnOn: boolean) => void] {
13-
const [mediaStreams, setMediaStreams] = useState<Map<string, MediaStream>>(
14-
new Map(),
15-
);
16-
const [myStream, setMyStream] = useState<MediaStream>();
17-
18-
const setMyTrack = async (kind: TrackKind, turnOn: boolean) => {
19-
if (!myStream) {
20-
return;
21-
}
22-
setTrack(myStream, kind, turnOn);
23-
};
20+
): [MeetingMediaStream[], SetLocalAudio, SetLocalVideo] {
21+
const [meetingMediaStreams, setMeetingMediaStreams] = useState<
22+
MeetingMediaStream[]
23+
>([]);
24+
const [localStream, setLocalStream] = useState<MediaStream>();
2425

2526
const initRTC = async () => {
26-
const userMedia = await navigator.mediaDevices.getUserMedia({
27-
video: true,
28-
audio: true,
29-
});
30-
31-
setMyStream(userMedia);
32-
setMediaStreams((prev) =>
33-
copyMapWithOperation(prev, (map) => map.set('me', userMedia)),
27+
const userMediaConstraints = { video: true, audio: true };
28+
const userStream = await navigator.mediaDevices.getUserMedia(
29+
userMediaConstraints,
3430
);
31+
setLocalStream(userStream);
3532

36-
const rtc = new RTC(socket, STUN_SERVER, userMedia);
33+
// note: local MeetingMediaStream has empty id
34+
const localMeetingMediaStream: MeetingMediaStream = {
35+
stream: userStream,
36+
id: '',
37+
type: 'local',
38+
audioOn: true,
39+
videoOn: true,
40+
};
41+
setMeetingMediaStreams((prev) => [...prev, localMeetingMediaStream]);
3742

43+
const rtc = new RTC(socket, STUN_SERVER, userStream);
3844
rtc.onMediaConnected((socketId, remoteStream) => {
39-
setMediaStreams((prev) =>
40-
copyMapWithOperation(prev, (map) => map.set(socketId, remoteStream)),
41-
);
45+
const remoteMeetingMediaStream: MeetingMediaStream = {
46+
stream: remoteStream,
47+
id: socketId,
48+
type: 'remote',
49+
audioOn: true,
50+
videoOn: true,
51+
};
52+
setMeetingMediaStreams((prev) => [...prev, remoteMeetingMediaStream]);
4253
});
4354

4455
rtc.onMediaDisconnected((socketId) => {
45-
setMediaStreams((prev) =>
46-
copyMapWithOperation(prev, (map) => map.delete(socketId)),
47-
);
56+
setMeetingMediaStreams((prev) => prev.filter((_) => _.id !== socketId));
4857
});
4958

5059
rtc.connect();
@@ -54,15 +63,33 @@ export function useMeetingMediaStreams(
5463
initRTC();
5564
}, []);
5665

57-
return [mediaStreams, setMyTrack];
58-
}
66+
const setLocalAudio: SetLocalAudio = async (audioOn) => {
67+
if (!localStream) {
68+
return;
69+
}
70+
setTrack(localStream, 'audio', audioOn);
71+
socket.emit('audio_state_changed', audioOn);
72+
};
73+
74+
const setLocalVideo: SetLocalVideo = async (videoOn) => {
75+
if (!localStream) {
76+
return;
77+
}
78+
setTrack(localStream, 'video', videoOn);
79+
socket.emit('video_state_changed', videoOn);
80+
};
81+
82+
socket.on('audio_state_changed', (socketId, audioOn) => {
83+
setMeetingMediaStreams((prev) =>
84+
prev.map((_) => (_.id === socketId ? { ..._, audioOn } : _)),
85+
);
86+
});
87+
88+
socket.on('video_state_changed', (socketId, videoOn) => {
89+
setMeetingMediaStreams((prev) =>
90+
prev.map((_) => (_.id === socketId ? { ..._, videoOn } : _)),
91+
);
92+
});
5993

60-
// TODO: 코드 반복때문에 만든 함수. 더 좋은 방법 있으면 고치기
61-
function copyMapWithOperation<K, V>(
62-
prev: Map<K, V>,
63-
operation: (cur: Map<K, V>) => void,
64-
) {
65-
const cur = new Map(prev);
66-
operation(cur);
67-
return cur;
94+
return [meetingMediaStreams, setLocalAudio, setLocalVideo];
6895
}

client/src/hooks/useMeetingMediaStreamsV2.ts

Lines changed: 0 additions & 95 deletions
This file was deleted.

server/socket/workspace.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,6 @@ function workspaceSocketServer(io: Server) {
55
const namespace = io.of(/^\/workspace\/\d+$/);
66

77
namespace.on('connection', (socket) => {
8-
socket.on(WORKSPACE_EVENT.START_MEETING, () => {
9-
namespace.emit(WORKSPACE_EVENT.START_MEETING);
10-
});
11-
12-
socket.on(WORKSPACE_EVENT.END_MEETING, () => {
13-
namespace.emit(WORKSPACE_EVENT.END_MEETING);
14-
});
15-
168
socket.on(WORKSPACE_EVENT.SEND_HELLO, () => {
179
const senderId = socket.id;
1810

0 commit comments

Comments
 (0)