SignalManager
信令管理器,负责 SDP 协商和 ICE candidate 交换。内部由 WetRTC 自动管理,一般不需要直接使用。
导入
ts
import { SignalManager } from '@wetspace/wetrtc'构造函数
ts
new SignalManager(
channel: SignalChannel,
pc: RTCPeerConnection,
fsm: ConnectionStateMachine,
polite: boolean,
config?: SignalConfig
)| 参数 | 说明 |
|---|---|
channel | 信令通道实现 |
pc | RTCPeerConnection 实例 |
fsm | 连接状态机(用于更新状态) |
polite | 是否为礼貌方 |
config | 信令配置 |
SignalConfig
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
offerTimeout | number | 10000 | offer 超时 (ms) |
answerTimeout | number | 10000 | answer 超时 (ms) |
iceTimeout | number | 5000 | ICE 收集超时 (ms) |
方法
createOffer()
ts
createOffer(): Promise<void>创建并发送 SDP offer。
dispose()
ts
dispose(): void释放信令管理器资源。
类型:SignalChannel
ts
interface SignalChannel {
send(data: SignalMessage): Promise<void>
onMessage(handler: (data: SignalMessage) => void): () => void
}
interface SignalMessage {
type: 'offer' | 'answer' | 'ice-candidate' | 'bye'
sdp?: string
candidate?: RTCIceCandidateInit
}类型:BaseSignalChannel
ts
abstract class BaseSignalChannel
extends TypedEmitter<SignalChannelEvents>
implements SignalChannel
{
abstract send(data: SignalMessage): Promise<void>
abstract onMessage(handler: (data: SignalMessage) => void): () => void
}
type SignalChannelEvents = {
message: (msg: SignalMessage) => void
error: (err: Error) => void
closed: () => void
}