diff --git a/.vscode/tasks.json b/.vscode/tasks.json
deleted file mode 100644
index 92cac6b..0000000
--- a/.vscode/tasks.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "version": "2.0.0",
- "tasks": [
- {
- "type": "npm",
- "script": "dev_secure",
- "problemMatcher": [],
- "label": "npm: dev_secure",
- "detail": "ts-node ./src/index.ts -p 8080 -m private -s -k ./server.key -c ./server.crt"
- }
- ]
-}
\ No newline at end of file
diff --git a/client/public/images/FullScreen.png b/client/public/assets/images/FullScreen.png
similarity index 100%
rename from client/public/images/FullScreen.png
rename to client/public/assets/images/FullScreen.png
diff --git a/client/public/images/Play.png b/client/public/assets/images/Play.png
similarity index 100%
rename from client/public/images/Play.png
rename to client/public/assets/images/Play.png
diff --git a/client/public/images/favicon.ico b/client/public/assets/images/favicon.ico
similarity index 100%
rename from client/public/images/favicon.ico
rename to client/public/assets/images/favicon.ico
diff --git a/client/public/images/head/三花猫.png b/client/public/assets/images/head/三花猫.png
similarity index 100%
rename from client/public/images/head/三花猫.png
rename to client/public/assets/images/head/三花猫.png
diff --git a/client/public/images/head/仓鼠.png b/client/public/assets/images/head/仓鼠.png
similarity index 100%
rename from client/public/images/head/仓鼠.png
rename to client/public/assets/images/head/仓鼠.png
diff --git a/client/public/images/head/可达鸭.png b/client/public/assets/images/head/可达鸭.png
similarity index 100%
rename from client/public/images/head/可达鸭.png
rename to client/public/assets/images/head/可达鸭.png
diff --git a/client/public/images/head/哈士奇.png b/client/public/assets/images/head/哈士奇.png
similarity index 100%
rename from client/public/images/head/哈士奇.png
rename to client/public/assets/images/head/哈士奇.png
diff --git a/client/public/images/head/奶牛猫.png b/client/public/assets/images/head/奶牛猫.png
similarity index 100%
rename from client/public/images/head/奶牛猫.png
rename to client/public/assets/images/head/奶牛猫.png
diff --git a/client/public/images/head/布偶猫.png b/client/public/assets/images/head/布偶猫.png
similarity index 100%
rename from client/public/images/head/布偶猫.png
rename to client/public/assets/images/head/布偶猫.png
diff --git a/client/public/images/head/无毛猫.png b/client/public/assets/images/head/无毛猫.png
similarity index 100%
rename from client/public/images/head/无毛猫.png
rename to client/public/assets/images/head/无毛猫.png
diff --git a/client/public/images/head/暹罗猫.png b/client/public/assets/images/head/暹罗猫.png
similarity index 100%
rename from client/public/images/head/暹罗猫.png
rename to client/public/assets/images/head/暹罗猫.png
diff --git a/client/public/images/head/柯基.png b/client/public/assets/images/head/柯基.png
similarity index 100%
rename from client/public/images/head/柯基.png
rename to client/public/assets/images/head/柯基.png
diff --git a/client/public/images/head/柴犬.png b/client/public/assets/images/head/柴犬.png
similarity index 100%
rename from client/public/images/head/柴犬.png
rename to client/public/assets/images/head/柴犬.png
diff --git a/client/public/images/head/橘猫.png b/client/public/assets/images/head/橘猫.png
similarity index 100%
rename from client/public/images/head/橘猫.png
rename to client/public/assets/images/head/橘猫.png
diff --git a/client/public/images/head/法斗.png b/client/public/assets/images/head/法斗.png
similarity index 100%
rename from client/public/images/head/法斗.png
rename to client/public/assets/images/head/法斗.png
diff --git a/client/public/images/head/田园犬.png b/client/public/assets/images/head/田园犬.png
similarity index 100%
rename from client/public/images/head/田园犬.png
rename to client/public/assets/images/head/田园犬.png
diff --git a/client/public/images/head/白猫.png b/client/public/assets/images/head/白猫.png
similarity index 100%
rename from client/public/images/head/白猫.png
rename to client/public/assets/images/head/白猫.png
diff --git a/client/public/images/head/羊.png b/client/public/assets/images/head/羊.png
similarity index 100%
rename from client/public/images/head/羊.png
rename to client/public/assets/images/head/羊.png
diff --git a/client/public/images/head/腊肠犬.png b/client/public/assets/images/head/腊肠犬.png
similarity index 100%
rename from client/public/images/head/腊肠犬.png
rename to client/public/assets/images/head/腊肠犬.png
diff --git a/client/public/images/head/荷兰猪.png b/client/public/assets/images/head/荷兰猪.png
similarity index 100%
rename from client/public/images/head/荷兰猪.png
rename to client/public/assets/images/head/荷兰猪.png
diff --git a/client/public/images/head/蓝猫.png b/client/public/assets/images/head/蓝猫.png
similarity index 100%
rename from client/public/images/head/蓝猫.png
rename to client/public/assets/images/head/蓝猫.png
diff --git a/client/public/images/head/藏獒.png b/client/public/assets/images/head/藏獒.png
similarity index 100%
rename from client/public/images/head/藏獒.png
rename to client/public/assets/images/head/藏獒.png
diff --git a/client/public/images/head/边牧.png b/client/public/assets/images/head/边牧.png
similarity index 100%
rename from client/public/images/head/边牧.png
rename to client/public/assets/images/head/边牧.png
diff --git a/client/public/images/head/金毛.png b/client/public/assets/images/head/金毛.png
similarity index 100%
rename from client/public/images/head/金毛.png
rename to client/public/assets/images/head/金毛.png
diff --git a/client/public/images/head/黑猫.png b/client/public/assets/images/head/黑猫.png
similarity index 100%
rename from client/public/images/head/黑猫.png
rename to client/public/assets/images/head/黑猫.png
diff --git a/client/public/images/p1.png b/client/public/assets/images/p1.png
similarity index 100%
rename from client/public/images/p1.png
rename to client/public/assets/images/p1.png
diff --git a/client/public/images/p2.png b/client/public/assets/images/p2.png
similarity index 100%
rename from client/public/images/p2.png
rename to client/public/assets/images/p2.png
diff --git a/client/public/images/screenshot.png b/client/public/assets/images/screenshot.png
similarity index 100%
rename from client/public/images/screenshot.png
rename to client/public/assets/images/screenshot.png
diff --git a/client/public/uploads/avatars/avatar_1d006f98-8352-47d5-bf35-c65a98dfc377.png b/client/public/assets/uploads/avatars/avatar_1d006f98-8352-47d5-bf35-c65a98dfc377.png
similarity index 100%
rename from client/public/uploads/avatars/avatar_1d006f98-8352-47d5-bf35-c65a98dfc377.png
rename to client/public/assets/uploads/avatars/avatar_1d006f98-8352-47d5-bf35-c65a98dfc377.png
diff --git a/client/public/uploads/avatars/avatar_be8f2ecc-726c-4b99-bcd0-818aa962e311.png b/client/public/assets/uploads/avatars/avatar_be8f2ecc-726c-4b99-bcd0-818aa962e311.png
similarity index 100%
rename from client/public/uploads/avatars/avatar_be8f2ecc-726c-4b99-bcd0-818aa962e311.png
rename to client/public/assets/uploads/avatars/avatar_be8f2ecc-726c-4b99-bcd0-818aa962e311.png
diff --git a/client/public/uploads/avatars/user_XPMwGa7W.png b/client/public/assets/uploads/avatars/user_XPMwGa7W.png
similarity index 100%
rename from client/public/uploads/avatars/user_XPMwGa7W.png
rename to client/public/assets/uploads/avatars/user_XPMwGa7W.png
diff --git a/client/public/chatmessage.js b/client/public/call/chat/chatmessage.js
similarity index 96%
rename from client/public/chatmessage.js
rename to client/public/call/chat/chatmessage.js
index 95750b4..dbfe275 100644
--- a/client/public/chatmessage.js
+++ b/client/public/call/chat/chatmessage.js
@@ -1,13 +1,13 @@
-import { createLogger } from './logger.js';
+import { createLogger } from '../../shared/logger.js';
const logger = createLogger('chat');
/**
* 消息模块
* 处理聊天消息的发送、接收和显示
*/
-import { showNotification, generateId } from './utils.js';
-import store from './store.js';
-import { mockMessages } from './models.js';
+import { showNotification, generateId } from '../../shared/utils.js';
+import store from '../store.js';
+import { mockMessages } from '../models.js';
const MAX_IMAGE_SIZE = 5 * 1024 * 1024; // 5MB
diff --git a/client/public/renderer-chat.js b/client/public/call/chat/renderer-chat.js
similarity index 100%
rename from client/public/renderer-chat.js
rename to client/public/call/chat/renderer-chat.js
diff --git a/client/public/connectview.js b/client/public/call/connectview.js
similarity index 96%
rename from client/public/connectview.js
rename to client/public/call/connectview.js
index 176a086..fe1b195 100644
--- a/client/public/connectview.js
+++ b/client/public/call/connectview.js
@@ -1,13 +1,13 @@
-import { showNotification } from './utils.js';
+import { showNotification } from '../shared/utils.js';
import store from './store.js';
import {
fetchConnectionDirectory,
fetchOnlineUsers,
renderConnectionIds,
renderOnlineUsers
-} from './connect-directory.js';
-import { createProfileSettingsController } from './profile-settings.js';
-import { createLogger } from './logger.js';
+} from './signaling/connect-directory.js';
+import { createProfileSettingsController } from './controllers/profile-settings.js';
+import { createLogger } from '../shared/logger.js';
const logger = createLogger('connectview');
diff --git a/client/public/call-view-controller.js b/client/public/call/controllers/call-view-controller.js
similarity index 100%
rename from client/public/call-view-controller.js
rename to client/public/call/controllers/call-view-controller.js
diff --git a/client/public/invite-controller.js b/client/public/call/controllers/invite-controller.js
similarity index 99%
rename from client/public/invite-controller.js
rename to client/public/call/controllers/invite-controller.js
index 45a80b4..6560386 100644
--- a/client/public/invite-controller.js
+++ b/client/public/call/controllers/invite-controller.js
@@ -1,4 +1,4 @@
-import { createLogger } from './logger.js';
+import { createLogger } from '../../shared/logger.js';
const logger = createLogger('invite');
const DEFAULT_CALLER_NAME = '\u9080\u8bf7\u65b9';
diff --git a/client/public/profile-settings.js b/client/public/call/controllers/profile-settings.js
similarity index 99%
rename from client/public/profile-settings.js
rename to client/public/call/controllers/profile-settings.js
index 845f86b..72f76ae 100644
--- a/client/public/profile-settings.js
+++ b/client/public/call/controllers/profile-settings.js
@@ -1,4 +1,4 @@
-import { createLogger } from './logger.js';
+import { createLogger } from '../../shared/logger.js';
const logger = createLogger('profile');
const DEFAULT_AVATAR = '/images/p1.png';
diff --git a/client/public/index.html b/client/public/call/index.html
similarity index 99%
rename from client/public/index.html
rename to client/public/call/index.html
index 1b720ae..306799b 100644
--- a/client/public/index.html
+++ b/client/public/call/index.html
@@ -7,7 +7,7 @@
VideoCall - 一对一视频通话
-
+
@@ -726,8 +726,8 @@
-
-
+
+
diff --git a/client/public/main.js b/client/public/call/main.js
similarity index 90%
rename from client/public/main.js
rename to client/public/call/main.js
index 9f3bf6c..c49c83e 100644
--- a/client/public/main.js
+++ b/client/public/call/main.js
@@ -1,15 +1,15 @@
import store from './store.js';
-import UIRenderer from './renderer.js';
-import { showNotification, randomMeetingId } from './utils.js';
-import chatMessage from './chatmessage.js';
-import { createCallViewController } from './call-view-controller.js';
+import UIRenderer from './renderers/renderer.js';
+import { showNotification, randomMeetingId } from '../shared/utils.js';
+import chatMessage from './chat/chatmessage.js';
+import { createCallViewController } from './controllers/call-view-controller.js';
import {
bindConnectViewEvents,
initWebSocket,
loadUserSettings
} from './connectview.js';
-import { createInviteController } from './invite-controller.js';
-import { createLogger } from './logger.js';
+import { createInviteController } from './controllers/invite-controller.js';
+import { createLogger } from '../shared/logger.js';
const logger = createLogger('main');
diff --git a/client/public/media-config.js b/client/public/call/media/media-config.js
similarity index 100%
rename from client/public/media-config.js
rename to client/public/call/media/media-config.js
diff --git a/client/public/media-monitoring.js b/client/public/call/media/media-monitoring.js
similarity index 100%
rename from client/public/media-monitoring.js
rename to client/public/call/media/media-monitoring.js
diff --git a/client/public/meeting-recorder.js b/client/public/call/media/meeting-recorder.js
similarity index 100%
rename from client/public/meeting-recorder.js
rename to client/public/call/media/meeting-recorder.js
diff --git a/client/public/renderer-media.js b/client/public/call/media/renderer-media.js
similarity index 97%
rename from client/public/renderer-media.js
rename to client/public/call/media/renderer-media.js
index 906bcdc..297407b 100644
--- a/client/public/renderer-media.js
+++ b/client/public/call/media/renderer-media.js
@@ -1,5 +1,5 @@
-import { createParticipantTile, getParticipantTile } from './renderer-participant-grid.js';
-import { createLogger } from './logger.js';
+import { createParticipantTile, getParticipantTile } from '../participants/renderer-participant-grid.js';
+import { createLogger } from '../../shared/logger.js';
const logger = createLogger('renderer-media');
diff --git a/client/public/webrtc-stats.js b/client/public/call/media/webrtc-stats.js
similarity index 100%
rename from client/public/webrtc-stats.js
rename to client/public/call/media/webrtc-stats.js
diff --git a/client/public/models.js b/client/public/call/models.js
similarity index 100%
rename from client/public/models.js
rename to client/public/call/models.js
diff --git a/client/public/participants.js b/client/public/call/participants/participants.js
similarity index 100%
rename from client/public/participants.js
rename to client/public/call/participants/participants.js
diff --git a/client/public/renderer-participant-grid.js b/client/public/call/participants/renderer-participant-grid.js
similarity index 100%
rename from client/public/renderer-participant-grid.js
rename to client/public/call/participants/renderer-participant-grid.js
diff --git a/client/public/renderer-ui.js b/client/public/call/renderers/renderer-ui.js
similarity index 100%
rename from client/public/renderer-ui.js
rename to client/public/call/renderers/renderer-ui.js
diff --git a/client/public/renderer.js b/client/public/call/renderers/renderer.js
similarity index 98%
rename from client/public/renderer.js
rename to client/public/call/renderers/renderer.js
index c9ebe2e..5290c02 100644
--- a/client/public/renderer.js
+++ b/client/public/call/renderers/renderer.js
@@ -1,7 +1,7 @@
-import { formatTime, formatTimestamp, toggleElement, toggleButtonState } from './utils.js';
-import { mockCallSession } from './models.js';
-import chatMessage from './chatmessage.js';
-import store from './store.js';
+import { formatTime, formatTimestamp, toggleElement, toggleButtonState } from '../../shared/utils.js';
+import { mockCallSession } from '../models.js';
+import chatMessage from '../chat/chatmessage.js';
+import store from '../store.js';
import {
buildUserCountLabel,
createUserEntryElement,
@@ -10,11 +10,11 @@ import {
getNetworkQualityDisplay,
getRemoteVideoPlaceholderText
} from './renderer-ui.js';
-import { renderChatMessagesInto } from './renderer-chat.js';
+import { renderChatMessagesInto } from '../chat/renderer-chat.js';
import {
updateParticipantTileName as syncParticipantTileName,
updateParticipantTilePlaceholder
-} from './renderer-participant-grid.js';
+} from '../participants/renderer-participant-grid.js';
import {
adjustVideoSize,
clearParticipantGrid,
@@ -22,8 +22,8 @@ import {
removeParticipantTile,
renderParticipantStreamMedia,
renderSingleRemoteStreamMedia
-} from './renderer-media.js';
-import { createLogger } from './logger.js';
+} from '../media/renderer-media.js';
+import { createLogger } from '../../shared/logger.js';
const logger = createLogger('renderer');
@@ -513,7 +513,7 @@ class UIRenderer {
renderCallEnded() {
logger.debug('Call ended');
clearParticipantGrid(this.elements.participantGrid);
- window.location.href = './endcall/endcall.html';
+ window.location.href = '/endcall/';
}
renderParticipantLeft(connectionId) {
diff --git a/client/public/connect-directory.js b/client/public/call/signaling/connect-directory.js
similarity index 100%
rename from client/public/connect-directory.js
rename to client/public/call/signaling/connect-directory.js
diff --git a/client/public/signaling-session.js b/client/public/call/signaling/signaling-session.js
similarity index 95%
rename from client/public/signaling-session.js
rename to client/public/call/signaling/signaling-session.js
index 737d3ae..db1b24b 100644
--- a/client/public/signaling-session.js
+++ b/client/public/call/signaling/signaling-session.js
@@ -1,5 +1,5 @@
-import { Signaling, WebSocketSignaling } from "../../module/signaling.js";
-import { createLogger } from './logger.js';
+import { Signaling, WebSocketSignaling } from '/module/core/signaling.js';
+import { createLogger } from '../../shared/logger.js';
const logger = createLogger('signaling');
diff --git a/client/public/store.js b/client/public/call/store.js
similarity index 98%
rename from client/public/store.js
rename to client/public/call/store.js
index d5892b4..87bd5fa 100644
--- a/client/public/store.js
+++ b/client/public/call/store.js
@@ -1,15 +1,15 @@
import { mockCallSession } from './models.js';
-import { RenderStreaming } from "../../module/renderstreaming.js";
-import { getServerConfig, getRTCConfiguration } from "../js/config.js";
-import { showNotification, generateId } from './utils.js';
-import chatMessage from './chatmessage.js';
-import { DEFAULT_PARTICIPANT_AVATAR, DEFAULT_PARTICIPANT_NAME, buildParticipantsSyncData, omitParticipant, removeParticipant, upsertParticipant } from './participants.js';
-import { AUDIO_CONFIG, VAD_CONFIG, VIDEO_ONLY_CONSTRAINT, buildVideoConstraints, getAdaptiveVideoBitrate, getResolutionLabel, getTargetResolutionBitrate } from './media-config.js';
-import { buildStatsLogPayload, createAudioAnalyser, getAudioLevel } from './media-monitoring.js';
-import { bindInviteSocketEvents, buildSocketUserInfoPayload, createSignalingInstance, ensureSignalingStarted, getActiveSignalingInstance, sendInviteSignal, sendSocketUserInfo } from './signaling-session.js';
-import { getNetworkQualityFromSummary, summarizeInboundStats } from './webrtc-stats.js';
-import { createLogger } from './logger.js';
-import { MeetingRecorder } from './meeting-recorder.js';
+import { RenderStreaming } from '/module/core/renderstreaming.js';
+import { getServerConfig, getRTCConfiguration } from '../render-streaming/config.js';
+import { showNotification, generateId } from '../shared/utils.js';
+import chatMessage from './chat/chatmessage.js';
+import { DEFAULT_PARTICIPANT_AVATAR, DEFAULT_PARTICIPANT_NAME, buildParticipantsSyncData, omitParticipant, removeParticipant, upsertParticipant } from './participants/participants.js';
+import { AUDIO_CONFIG, VAD_CONFIG, VIDEO_ONLY_CONSTRAINT, buildVideoConstraints, getAdaptiveVideoBitrate, getResolutionLabel, getTargetResolutionBitrate } from './media/media-config.js';
+import { buildStatsLogPayload, createAudioAnalyser, getAudioLevel } from './media/media-monitoring.js';
+import { bindInviteSocketEvents, buildSocketUserInfoPayload, createSignalingInstance, ensureSignalingStarted, getActiveSignalingInstance, sendInviteSignal, sendSocketUserInfo } from './signaling/signaling-session.js';
+import { getNetworkQualityFromSummary, summarizeInboundStats } from './media/webrtc-stats.js';
+import { createLogger } from '../shared/logger.js';
+import { MeetingRecorder } from './media/meeting-recorder.js';
const logger = createLogger('store');
class CallStateManager {
diff --git a/client/public/connect/connect.js b/client/public/connect/connect.js
index 8fc69bf..5de434e 100644
--- a/client/public/connect/connect.js
+++ b/client/public/connect/connect.js
@@ -1,4 +1,4 @@
-import { createLogger } from '../logger.js';
+import { createLogger } from '../shared/logger.js';
const logger = createLogger('legacy-connect');
/**
@@ -6,7 +6,7 @@ const logger = createLogger('legacy-connect');
* 处理初始连接、创建通话和加入通话的功能
*/
-import { showNotification, randomMeetingId } from '../utils.js';
+import { showNotification, randomMeetingId } from '../shared/utils.js';
const MAX_AVATAR_SIZE = 2 * 1024 * 1024; // 2MB
@@ -20,7 +20,7 @@ function joinCall() {
localStorage.setItem('connectionId', connectionId);
// 跳转到通话界面
- window.location.href = '../index.html';
+ window.location.href = '/';
} else {
showNotification('请输入连接ID', 'error');
}
@@ -39,7 +39,7 @@ function createCall() {
localStorage.setItem('connectionId', connectionId);
// 跳转到通话界面
- window.location.href = '../index.html';
+ window.location.href = '/';
}
diff --git a/client/public/connect/connect.html b/client/public/connect/index.html
similarity index 87%
rename from client/public/connect/connect.html
rename to client/public/connect/index.html
index ad059b6..3e77002 100644
--- a/client/public/connect/connect.html
+++ b/client/public/connect/index.html
@@ -6,7 +6,7 @@
VideoCall - 重定向
diff --git a/client/public/README.md b/client/public/docs/README.md
similarity index 100%
rename from client/public/README.md
rename to client/public/docs/README.md
diff --git a/client/public/code-structure.md b/client/public/docs/code-structure.md
similarity index 100%
rename from client/public/code-structure.md
rename to client/public/docs/code-structure.md
diff --git a/client/public/knowledge-graph.md b/client/public/docs/knowledge-graph.md
similarity index 100%
rename from client/public/knowledge-graph.md
rename to client/public/docs/knowledge-graph.md
diff --git a/client/public/endcall/endcall.js b/client/public/endcall/endcall.js
index 3cf0a70..1517446 100644
--- a/client/public/endcall/endcall.js
+++ b/client/public/endcall/endcall.js
@@ -3,14 +3,14 @@
* 处理通话结束后的操作,如重新连接或返回连接界面
*/
-import { showNotification } from '../utils.js';
+import { showNotification } from '../shared/utils.js';
// 重新连接
function reconnectCall() {
showNotification('正在重新连接...');
// 跳转到通话界面
- window.location.href = '../index.html';
+ window.location.href = '/';
}
// 离开
@@ -19,7 +19,7 @@ function leaveCall() {
localStorage.removeItem('connectionId');
// 跳转到连接界面
- window.location.href = '../connect/connect.html';
+ window.location.href = '/connect/';
}
// 绑定事件监听器
diff --git a/client/public/endcall/endcall.html b/client/public/endcall/index.html
similarity index 97%
rename from client/public/endcall/endcall.html
rename to client/public/endcall/index.html
index 21710db..d52a6c6 100644
--- a/client/public/endcall/endcall.html
+++ b/client/public/endcall/index.html
@@ -6,7 +6,7 @@
VideoCall - 通话结束
-
+