Skip to content

Commit 89b11df

Browse files
committed
#78 녹화 기능 추가 :: 녹화 중 방 입장 시 참여자에게 알림 기능 버그 수정
1 parent 5a189ca commit 89b11df

File tree

5 files changed

+28
-45
lines changed

5 files changed

+28
-45
lines changed

nodejs-frontend/static/js/rtc/kurento-service.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -422,8 +422,8 @@ ws.onmessage = function (message) {
422422
recording.handleRecordingError(parsedMessage);
423423
}
424424
break;
425-
case 'recordingAlreadyProcessing':
426-
recording.recordingAlreadyProcessing(parsedMessage);
425+
case 'recordingInProgress':
426+
recording.recordingInProgress(parsedMessage);
427427
break;
428428
default:
429429
Toastify({

nodejs-frontend/static/js/rtc/recording.js

Lines changed: 21 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ const recording = {
7979
isOtherUserRecording: false,
8080

8181
// 해당 방에서 녹화 사용 여부
82-
isReadyRecording: false,
82+
isAlreadyRecording: false,
8383

8484
// 서버 측 녹화
8585
serverRecordingId: null,
@@ -222,14 +222,14 @@ const recording = {
222222
*/
223223
startRecording: function () {
224224
let self = this;
225-
if(self.isReadyRecording) {
225+
if(self.isAlreadyRecording) {
226226
self.showToast('해당 방은 이미 녹화 파일이 있습니다. 녹화를 시작할 수 없습니다.', 3000, 'warning');
227227
return;
228228
}
229229

230230
try {
231231
self.isRecording = true;
232-
self.isReadyRecording = true;
232+
self.isAlreadyRecording = true;
233233

234234
// 1. 서버에 녹화 시작 요청
235235
self.startServerRecording();
@@ -251,7 +251,7 @@ const recording = {
251251
console.warn('[RECORDING] speechRecognitionUtils not available');
252252
}
253253

254-
console.log('녹화 시작 완료, isReadyRecording:', self.isReadyRecording);
254+
console.log('녹화 시작 완료, isAlreadyRecording:', self.isAlreadyRecording);
255255
self.showToast('녹화를 시작합니다.');
256256

257257
} catch (error) {
@@ -471,7 +471,7 @@ const recording = {
471471
console.warn('[RECORDING] speechRecognitionUtils not available');
472472
}
473473

474-
console.log('녹화 중지 완료, isReadyRecording:', self.isReadyRecording);
474+
console.log('녹화 중지 완료, isAlreadyRecording:', self.isAlreadyRecording);
475475
self.showToast('녹화를 중지했습니다.');
476476

477477
} catch (error) {
@@ -609,11 +609,11 @@ const recording = {
609609
let self = this;
610610
let recordingEvent = eventType === 'recordingStarted';
611611

612-
// [FIX] 녹화 시작 시에만 isReadyRecording을 true로 설정
612+
// 녹화 시작 시에만 isAlreadyRecording을 true로 설정
613613
// TODO: 추후 각 사용자별 1회 녹화 허용 시 사용자별 녹화 횟수 추적 필요
614614
if (eventType === 'recordingStarted') {
615-
self.isReadyRecording = true;
616-
console.log('[RECORDING] Room recording started by:', recordingUser, '- isReadyRecording set to true');
615+
self.isAlreadyRecording = true;
616+
console.log('[RECORDING] Room recording started by:', recordingUser, '- isAlreadyRecording set to true');
617617
}
618618

619619
// 녹화 알림
@@ -773,12 +773,11 @@ const recording = {
773773
*/
774774
sendRecordingLinkToChat: function(fileName, filePath, fileSizeMB) {
775775
try {
776-
const nickName = nickName || 'System';
777776

778777
// DataChannel을 통해 녹화 링크 메시지 전송
779778
const recordingLinkMessage = {
780779
type: 'recordingLink',
781-
userName: nickName,
780+
userName: nickName || 'SYSTEM',
782781
name: fileName,
783782
path: filePath,
784783
fileSizeMB: fileSizeMB,
@@ -847,7 +846,7 @@ const recording = {
847846
// 녹화 상태 초기화
848847
self.isRecording = false;
849848
self.serverRecordingId = null;
850-
self.isReadyRecording = true;
849+
self.isAlreadyRecording = true;
851850
}
852851
},
853852

@@ -969,36 +968,20 @@ const recording = {
969968
});
970969
}, 30000);
971970
},
972-
recordingAlreadyProcessing : function(parseMessage = ''){
971+
recordingInProgress : function(parseMessage = ''){
972+
let self = this;
973+
self.isAlreadyRecording = true;
974+
self.isOtherUserRecording = true;
975+
self.isAlreadyRecording = true;
973976
console.log('[RECORDING] 녹화 중인 방에 입장:', parseMessage);
974977

975-
// 녹화 및 자막 버튼 비활성화
976-
const recordingStartBtn = $('#recordingStartBtn');
977-
const recordingStopBtn = $('#recordingStopBtn');
978-
const subtitleBtn = $('#subtitleBtn');
978+
// 오디오 믹싱 시작
979+
self.startAudioMixing();
979980

980-
if (recordingStartBtn.length) {
981-
recordingStartBtn.prop('disabled', true);
982-
recordingStartBtn.css('opacity', '0.5');
983-
}
984-
if (recordingStopBtn.length) {
985-
recordingStopBtn.prop('disabled', true);
986-
recordingStopBtn.css('opacity', '0.5');
987-
}
988-
if (subtitleBtn.length) {
989-
subtitleBtn.prop('disabled', true);
990-
subtitleBtn.css('opacity', '0.5');
991-
}
981+
// UI 업데이트(녹화 및 자막 버튼 비활성화)
982+
self.updateUI('recording');
992983

993-
// 토스트 알림
994-
Toastify({
995-
text: parseMessage.message,
996-
duration: 5000,
997-
gravity: "top",
998-
position: "center",
999-
style: {
1000-
background: "linear-gradient(to right, #FF6B6B, #FFE66D)",
1001-
},
1002-
}).showToast();
984+
// 토스트 알림
985+
self.showToast(parseMessage.message);
1003986
}
1004987
};

springboot-backend/src/main/java/webChat/model/kurento/KurentoMessageType.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,9 +184,9 @@ public enum KurentoMessageType {
184184
),
185185

186186
/**
187-
* 이미 녹화 파일 존재
187+
* 이미 녹화가 진행중인 방(새로운 참여자에게 알림)
188188
*/
189-
RECORDING_ALREADY_PROCESSING(
189+
RECORDING_INPROGRESS(
190190
"recordingAlreadyProcessing",
191191
null,
192192
""

springboot-backend/src/main/java/webChat/service/kurento/KurentoHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ private void joinRoom(KurentoRTCMessage message, WebSocketSession session) throw
230230
RecordingInfo recordingInfo = kurentoRoom.getRecordingInfo();
231231
KurentoUserSession user = participantService.getBySessionId(session);
232232
kurentoMessageSender.sendToUser(user,
233-
KurentoMessageBuilder.recordingAlreadyProcessing()
233+
KurentoMessageBuilder.recordingInProgress()
234234
.recordingId(recordingInfo.getRecordingId())
235235
.message(String.format("%s 님이 녹화 중입니다. 녹화 및 자막 기능이 비활성화됩니다.",
236236
recordingInfo.getRecordingNickName())));

springboot-backend/src/main/java/webChat/service/kurento/KurentoMessageBuilder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@ public static KurentoMessageBuilder recordingFileExistsError() {
115115
/**
116116
* 이미 녹화가 진행중인 방에 참여자 입장
117117
*/
118-
public static KurentoMessageBuilder recordingAlreadyProcessing(){
119-
return new KurentoMessageBuilder(KurentoMessageType.RECORDING_ALREADY_PROCESSING);
118+
public static KurentoMessageBuilder recordingInProgress(){
119+
return new KurentoMessageBuilder(KurentoMessageType.RECORDING_INPROGRESS);
120120
}
121121

122122
// 참가자 관련

0 commit comments

Comments
 (0)