修改BaseWebRTC 的配置注入
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user