修改BaseWebRTC 的配置注入

This commit is contained in:
david_bai
2025-06-07 19:17:52 +08:00
parent 27ed495571
commit 60f42eb548
4 changed files with 28 additions and 14 deletions
+12 -3
View File
@@ -3,7 +3,11 @@ import WebRTC_Initiator from "@/lib/webrtc_Initiator";
import WebRTC_Recipient from "@/lib/webrtc_Recipient";
import FileSender from "@/lib/fileSender";
import FileReceiver from "@/lib/fileReceiver";
import { config } from "@/app/config/environment"; // For API_URL
import {
config,
getIceServers,
getSocketOptions,
} from "@/app/config/environment";
import type { CustomFile, fileMetadata, FileMeta } from "@/types/webrtc"; // Assuming FileMeta might be used by caller
import type { Messages } from "@/types/messages";
@@ -55,8 +59,13 @@ export function useWebRTCConnection({
// Initialize WebRTC objects and their cleanup
useEffect(() => {
const senderConn = new WebRTC_Initiator(config.API_URL);
const receiverConn = new WebRTC_Recipient(config.API_URL);
const webRTCConfig = {
iceServers: getIceServers(),
socketOptions: getSocketOptions()|| {},
signalingServer: config.API_URL,
};
const senderConn = new WebRTC_Initiator(webRTCConfig);
const receiverConn = new WebRTC_Recipient(webRTCConfig);
setSender(senderConn);
setReceiver(receiverConn);
+3 -3
View File
@@ -1,11 +1,11 @@
// 发起方 流程: 加入房间; 收到 'ready' 事件(新的接收方进入后socker server就会触发这个事件) -> createPeerConnection + createDataChannel -> createAndSendOffer
import BaseWebRTC from './webrtc_base';
import BaseWebRTC, { WebRTCConfig } from './webrtc_base';
import { postLogInDebug } from '@/app/config/api';
const developmentEnv = process.env.NEXT_PUBLIC_development!;//开发环境
export default class WebRTC_Initiator extends BaseWebRTC {
constructor(signalingServer: string) {
super(signalingServer);
constructor(config: WebRTCConfig) {
super(config);
this.setupInitiatorSocketListeners();
}
+3 -3
View File
@@ -1,5 +1,5 @@
// 接收方 流程: 加入房间; 收到 'offer' 事件 -> createPeerConnection + createDataChannel -> 发送 answer
import BaseWebRTC from './webrtc_base';
import BaseWebRTC, { WebRTCConfig } from './webrtc_base';
import { postLogInDebug } from '@/app/config/api';
const developmentEnv = process.env.NEXT_PUBLIC_development!;//开发环境
@@ -8,8 +8,8 @@ interface AnswerPayload {
peerId: string;
}
export default class WebRTC_Recipient extends BaseWebRTC {
constructor(signalingServer: string) {
super(signalingServer);
constructor(config: WebRTCConfig) {
super(config);
this.setupRecipientSocketListeners();
}
+10 -5
View File
@@ -1,6 +1,5 @@
// BaseWebRTC.js
import io from 'socket.io-client';
import { Socket } from 'socket.io-client';
import io, { Socket, ManagerOptions, SocketOptions } from 'socket.io-client';
import { getIceServers, getSocketOptions } from '@/app/config/environment';
import { WakeLockManager } from './wakeLockManager';
import { postLogInDebug } from '@/app/config/api';
@@ -19,6 +18,12 @@ interface CallbackTypes {
onConnectionStateChange?: (state: RTCPeerConnectionState, peerId: string) => void;
}
export interface WebRTCConfig {
iceServers: RTCIceServer[];
socketOptions: Partial<ManagerOptions & SocketOptions>;
signalingServer: string;// signalingServer: 信令服务器的URL,用于初始化Socket.IO连接。
}
export default class BaseWebRTC {
//类型申明
protected iceServers: RTCIceServer[];
@@ -42,9 +47,9 @@ export default class BaseWebRTC {
protected reconnectionInProgress: boolean;//防止重复重连
protected wakeLockManager: WakeLockManager;
constructor(signalingServer: string) {// signalingServer: 信令服务器的URL,用于初始化Socket.IO连接。
this.iceServers = getIceServers();
this.socket = io(signalingServer, getSocketOptions());
constructor(config: WebRTCConfig) {
this.iceServers = config.iceServers;
this.socket = io(config.signalingServer, config.socketOptions);
this.peerConnections = new Map();// Map<targetPeerId, RTCPeerConnection>
this.dataChannels = new Map();// Map<targetPeerId, RTCDataChannel>