Skip to content

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信令通道实现
pcRTCPeerConnection 实例
fsm连接状态机(用于更新状态)
polite是否为礼貌方
config信令配置

SignalConfig

参数类型默认值说明
offerTimeoutnumber10000offer 超时 (ms)
answerTimeoutnumber10000answer 超时 (ms)
iceTimeoutnumber5000ICE 收集超时 (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
}

Released under the MIT License.