Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions backend/socket/src/room/room.gateway.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,12 @@ export class RoomGateway implements OnGatewayConnection, OnGatewayDisconnect {

@SubscribeMessage(EVENT.ENTER_ROOM)
handleEnterRoom(@ConnectedSocket() client: Socket, @MessageBody() roomUUID: string) {
return this.connectionService.enterRoom({ client, server: this.server, roomUUID });
return this.connectionService.enterRoom({ client, roomUUID });
}

@SubscribeMessage(EVENT.LEAVE_ROOM)
handleLeaveRoom(@ConnectedSocket() client: Socket) {
return this.connectionService.leaveRoom({ client, server: this.server });
return this.connectionService.leaveRoom(client);
}

handleConnection(@ConnectedSocket() client: Socket) {
Expand All @@ -53,38 +53,38 @@ export class RoomGateway implements OnGatewayConnection, OnGatewayDisconnect {

handleDisconnect(@ConnectedSocket() client: Socket) {
this.logger.log(`disconnected: ${client.id}`);
this.webrtcService.disconnectWebrtc({ client, server: this.server });
this.connectionService.leaveRoom({ client, server: this.server });
this.webrtcService.disconnectWebrtc(client);
this.connectionService.leaveRoom(client);
}

// interview

@SubscribeMessage(EVENT.START_INTERVIEW)
handleStartInterview(@ConnectedSocket() client: Socket) {
return this.interviewService.startInterview({ client, server: this.server });
return this.interviewService.startInterview(client);
}

@SubscribeMessage(EVENT.END_INTERVIEW)
handleEndInterview(@ConnectedSocket() client: Socket) {
return this.interviewService.endInterview({ client, server: this.server });
return this.interviewService.endInterview(client);
}

@SubscribeMessage(EVENT.END_FEEDBACK)
handleEndFeedback(@ConnectedSocket() client: Socket) {
return this.interviewService.endFeedback({ client, server: this.server });
return this.interviewService.endFeedback(client);
}

// webRTC

@SubscribeMessage(EVENT.START_SIGNALING)
handleStartSignaling(@ConnectedSocket() client: Socket) {
return this.webrtcService.startSignaling({ client, server: this.server });
return this.webrtcService.startSignaling(client);
}

@SubscribeMessage(EVENT.OFFER)
handleOffer(@ConnectedSocket() client: Socket, @MessageBody() connectSignal: WebrtcOfferDto) {
return this.webrtcService.delivery({
server: this.server,
client,
connectSignal,
eventType: EVENT.OFFER,
});
Expand All @@ -93,7 +93,7 @@ export class RoomGateway implements OnGatewayConnection, OnGatewayDisconnect {
@SubscribeMessage(EVENT.ANSWER)
handleAnswer(@ConnectedSocket() client: Socket, @MessageBody() connectSignal: WebrtcAnswerDto) {
return this.webrtcService.delivery({
server: this.server,
client,
connectSignal,
eventType: EVENT.ANSWER,
});
Expand All @@ -105,7 +105,7 @@ export class RoomGateway implements OnGatewayConnection, OnGatewayDisconnect {
@MessageBody() connectSignal: WebrtcIcecandidateDto
) {
return this.webrtcService.delivery({
server: this.server,
client,
connectSignal,
eventType: EVENT.ICECANDIDATE,
});
Expand Down
21 changes: 6 additions & 15 deletions backend/socket/src/room/service/connection/connection.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,10 @@ export class ConnectionService {
/**
* default user를 생성하고 roomUUID에 해당하는 room에 유저가 들어가는 메서드입니다.
* @param client - client socket
* @param server - namespace 인스턴스
* @param roomUUID - room uuid
* @returns
*/
enterRoom({
client,
server,
roomUUID,
}: {
client: Socket;
server: Namespace;
roomUUID: string;
}) {
enterRoom({ client, roomUUID }: { client: Socket; roomUUID: string }) {
const room = this.roomRepository.getRoom(roomUUID);

const exception = this.isEnterableRoom(room);
Expand All @@ -57,7 +48,7 @@ export class ConnectionService {

client.join(roomUUID);
this.roomRepository.saveUserInRoom({ clientId: client.id, roomUUID, user });
server.to(roomUUID).emit(EVENT.ENTER_USER, { user });
client.to(roomUUID).emit(EVENT.ENTER_USER, { user });

return { data: { others, me: user } };
}
Expand Down Expand Up @@ -88,17 +79,17 @@ export class ConnectionService {
/**
* 방에서 해당 유저를 제거하고, 나머지 유저들에게 emit을 하는 메서드입니다.
* @param client - client socket
* @param server - namespace instance
*/
leaveRoom({ client, server }: { client: Socket; server: Namespace }) {
leaveRoom(client: Socket) {
const user = this.roomRepository.getUserByClientId(client.id);
if (!user) return;

const roomUUID = user.roomUUID;
this.roomRepository.removeUserInRoom({ roomUUID, user });
client.leave(roomUUID);

server.to(roomUUID).emit(EVENT.LEAVE_USER, { user });
client.to(roomUUID).emit(EVENT.LEAVE_USER, { user });

client.leave(roomUUID);

return {};
}
Expand Down
20 changes: 10 additions & 10 deletions backend/socket/src/room/service/interview/interview.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export class InterviewService {
private readonly roomRepository: RoomRepository
) {}

startInterview({ client, server }: { client: Socket; server: Namespace }) {
startInterview(client: Socket) {
const user = this.roomRepository.getUserByClientId(client.id);
const roomUUID = user.roomUUID;
const usersInRoom = this.roomRepository.getUsersInRoom(roomUUID);
Expand All @@ -38,7 +38,7 @@ export class InterviewService {
return {};
}

endInterview({ client, server }: { client: Socket; server: Namespace }) {
endInterview(client: Socket) {
const docsUUID = uuidv4();

const user = this.roomRepository.getUserByClientId(client.id);
Expand All @@ -52,7 +52,7 @@ export class InterviewService {
const clientId = this.roomRepository.getClientIdByUser(user.uuid);

const emitEvent = this.getEventAtEndInterviewByRole(user.role);
server.to(clientId).emit(emitEvent, { docsUUID });
client.to(clientId).emit(emitEvent, { docsUUID });
});

// TODO video object storage upload
Expand All @@ -70,7 +70,7 @@ export class InterviewService {
}
}

endFeedback({ client, server }: { client: Socket; server: Namespace }) {
endFeedback(client: Socket) {
const user = this.roomRepository.getUserByClientId(client.id);
const users = this.roomRepository.getUsersInRoom(user.roomUUID);
const MAX_FEEDBACK_COUNT = users.length - 1;
Expand All @@ -79,25 +79,25 @@ export class InterviewService {
const currentFeedbackCount = this.getFeedbackEndCount(user.roomUUID);

return currentFeedbackCount < MAX_FEEDBACK_COUNT
? this.inProgressCycle({ server, count: currentFeedbackCount, users })
: this.terminateCycle({ server, user, users });
? this.inProgressCycle({ client, count: currentFeedbackCount, users })
: this.terminateCycle({ client, user, users });
}

inProgressCycle({ server, count, users }: { server: Namespace; count: number; users: User[] }) {
inProgressCycle({ client, count, users }: { client: Socket; count: number; users: User[] }) {
const interviewee = users.find((user) => user.role === USER_ROLE.INTERVIEWEE);
const clientId = this.roomRepository.getClientIdByUser(interviewee.uuid);
server.to(clientId).emit(EVENT.COUNT_FEEDBACK, { count });
client.to(clientId).emit(EVENT.COUNT_FEEDBACK, { count });
return { data: { isLastFeedback: false, count } };
}

terminateCycle({ server, user, users }: { server: Namespace; user: User; users: User[] }) {
terminateCycle({ client, user, users }: { client: Socket; user: User; users: User[] }) {
const roomUUID = user.roomUUID;

this.validateRoomPhaseUpdate({ roomUUID, phase: ROOM_PHASE.LOBBY });
this.roomRepository.updateRoomPhase({ roomUUID, phase: ROOM_PHASE.LOBBY });

this.updateUsersRoleAtEndInterview(users);
server.to(roomUUID).emit(EVENT.TERMINATE_SESSION);
client.to(roomUUID).emit(EVENT.TERMINATE_SESSION);
return { data: { isLastFeedback: true } };
}

Expand Down
12 changes: 6 additions & 6 deletions backend/socket/src/room/service/webRTC/webrtc.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export class WebrtcService {
private readonly roomRepository: RoomRepository
) {}

startSignaling({ client, server }: { client: Socket; server: Namespace }) {
startSignaling(client: Socket) {
const user = this.roomRepository.getUserByClientId(client.id);
const usersInRoom = this.roomRepository.getUsersInRoom(user.roomUUID);
console.log(usersInRoom);
Expand All @@ -21,26 +21,26 @@ export class WebrtcService {
}

delivery({
server,
client,
connectSignal,
eventType,
}: {
server: Namespace;
client: Socket;
connectSignal: WebrtcBaseDto;
eventType: EVENT;
}) {
const { myId, opponentId } = connectSignal;
const opponentClientId = this.roomRepository.getClientIdByUser(opponentId);

server
client
.to(opponentClientId)
.emit(eventType, { ...connectSignal, myId: opponentId, opponentId: myId });
return {};
}

disconnectWebrtc({ client, server }: { client: Socket; server: Namespace }) {
disconnectWebrtc(client: Socket) {
const user = this.roomRepository.getUserByClientId(client.id);

server.to(user.roomUUID).emit(EVENT.DISCONNECT_WEBRTC, { userUUID: user.uuid });
client.to(user.roomUUID).emit(EVENT.DISCONNECT_WEBRTC, { userUUID: user.uuid });
}
}