diff --git a/backend/socket/Dockerfile b/backend/socket/Dockerfile new file mode 100644 index 00000000..fdd63436 --- /dev/null +++ b/backend/socket/Dockerfile @@ -0,0 +1,11 @@ +FROM node:16.18.1 + +WORKDIR /app + +COPY yarn.lock package.json ./ +RUN yarn install + +COPY . . +RUN yarn build + +CMD yarn start \ No newline at end of file diff --git a/backend/socket/src/room/room.gateway.ts b/backend/socket/src/room/room.gateway.ts index 0a25929e..2be0cda6 100644 --- a/backend/socket/src/room/room.gateway.ts +++ b/backend/socket/src/room/room.gateway.ts @@ -66,7 +66,7 @@ export class RoomGateway implements OnGatewayConnection, OnGatewayDisconnect { @SubscribeMessage(EVENT.END_INTERVIEW) handleEndInterview(@ConnectedSocket() client: Socket) { - return this.interviewService.endInterview(client); + return this.interviewService.endInterview({ client, server: this.server }); } @SubscribeMessage(EVENT.END_FEEDBACK) diff --git a/backend/socket/src/room/service/interview/interview.service.ts b/backend/socket/src/room/service/interview/interview.service.ts index 01e82887..b3a71390 100644 --- a/backend/socket/src/room/service/interview/interview.service.ts +++ b/backend/socket/src/room/service/interview/interview.service.ts @@ -38,7 +38,7 @@ export class InterviewService { return {}; } - endInterview(client: Socket) { + endInterview({ client, server }: { client: Socket; server: Namespace }) { const docsUUID = uuidv4(); const user = this.roomRepository.getUserByClientId(client.id); @@ -52,7 +52,7 @@ export class InterviewService { const clientId = this.roomRepository.getClientIdByUser(user.uuid); const emitEvent = this.getEventAtEndInterviewByRole(user.role); - client.to(clientId).emit(emitEvent, { docsUUID }); + server.to(clientId).emit(emitEvent, { docsUUID }); }); // TODO video object storage upload diff --git a/backend/socket/src/room/service/webRTC/webrtc.service.ts b/backend/socket/src/room/service/webRTC/webrtc.service.ts index 29435ea4..5be13925 100644 --- a/backend/socket/src/room/service/webRTC/webrtc.service.ts +++ b/backend/socket/src/room/service/webRTC/webrtc.service.ts @@ -40,6 +40,7 @@ export class WebrtcService { disconnectWebrtc(client: Socket) { const user = this.roomRepository.getUserByClientId(client.id); + if (!user) return; client.to(user.roomUUID).emit(EVENT.DISCONNECT_WEBRTC, { userUUID: user.uuid }); } diff --git a/frontend/package.json b/frontend/package.json index f469e64c..d3ed19b0 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -30,7 +30,7 @@ }, "scripts": { "start": "craco start", - "build": "craco build", + "build": "CI=false && craco build", "test": "craco test", "eject": "react-scripts eject", "storybook": "start-storybook -p 6006 -s public", diff --git a/frontend/src/pages/Lobby/Lobby.tsx b/frontend/src/pages/Lobby/Lobby.tsx index bc516247..3de7f2f7 100644 --- a/frontend/src/pages/Lobby/Lobby.tsx +++ b/frontend/src/pages/Lobby/Lobby.tsx @@ -31,7 +31,6 @@ const Lobby = () => { const streamList = useRecoilValue(webRTCStreamSelector); useEffect(() => { - //TODO 변경된 부분 BE랑 맞추기 socket.on(SOCKET_EVENT_TYPE.JOIN_INTERVIEW, ({ user: interviewee }) => { const newOthers = others.map((user) => { return user.uuid === interviewee.uuid @@ -61,12 +60,10 @@ const Lobby = () => { }, [others]); useEffect(() => { - //TODO Lobby 첫 렌더링 시가 아니라 첫 입장 시만 하기 - startConnection(me.uuid); + if (!webRTCUserList.has(me.uuid)) startConnection(me.uuid); }, []); const handleStartInterviewee = async () => { - //TODO 변경된 부분 BE랑 맞추기 await socketEmit(SOCKET_EVENT_TYPE.START_INTERVIEW); const newOthers = others.map((user) => {