Documentation
¶
Index ¶
- Constants
- func GetICEServers() []webrtc.ICEServer
- func Signal(webrtcSignal *WebrtcSignal, targetPeerId string) (interface{}, error)
- type AdvancedPeerConnection
- func (this *AdvancedPeerConnection) AddTrack(track webrtc.TrackLocal) (*webrtc.RTPSender, error)
- func (this *AdvancedPeerConnection) Close()
- func (this *AdvancedPeerConnection) CreateTrack(c *webrtc.RTPCodecCapability, trackId string, streamId string) (webrtc.TrackLocal, error)
- func (this *AdvancedPeerConnection) GetSenders(streamId string) []*webrtc.RTPSender
- func (this *AdvancedPeerConnection) GetTrackRemotes(streamId string) []*webrtc.TrackRemote
- func (this *AdvancedPeerConnection) Id() string
- func (this *AdvancedPeerConnection) Init(iceServers []webrtc.ICEServer) error
- func (this *AdvancedPeerConnection) ReadRTP(track *webrtc.TrackRemote) (*rtp.Packet, error)
- func (this *AdvancedPeerConnection) Send(data []byte) error
- func (this *AdvancedPeerConnection) SendText(data string) error
- func (this *AdvancedPeerConnection) WriteRTP(sender *webrtc.RTPSender, packet *rtp.Packet) error
- type BasePeerConnection
- func (this *BasePeerConnection) AddTrack(track webrtc.TrackLocal) (*webrtc.RTPSender, error)
- func (this *BasePeerConnection) BufferedAmount() uint64
- func (this *BasePeerConnection) Close()
- func (this *BasePeerConnection) Connected()
- func (this *BasePeerConnection) CreateTrack(c *webrtc.RTPCodecCapability, trackId string, streamId string) (webrtc.TrackLocal, error)
- func (this *BasePeerConnection) Emit(name WebrtcEventType, event *WebrtcEvent) (interface{}, error)
- func (this *BasePeerConnection) GetReceiver(trackId string) (*webrtc.TrackRemote, *webrtc.RTPReceiver)
- func (this *BasePeerConnection) GetSender(trackId string) *webrtc.RTPSender
- func (this *BasePeerConnection) GetSenders(streamId string) []*webrtc.RTPSender
- func (this *BasePeerConnection) GetSendersByKind(kind webrtc.RTPCodecType) []*webrtc.RTPSender
- func (this *BasePeerConnection) GetTrackRemotes(streamId string) []*webrtc.TrackRemote
- func (this *BasePeerConnection) GetTrackRemotesByKind(kind webrtc.RTPCodecType) []*webrtc.TrackRemote
- func (this *BasePeerConnection) Init(extension *SignalExtension, localTracks []webrtc.TrackLocal) error
- func (this *BasePeerConnection) On(name WebrtcEventType, fn func(event *WebrtcEvent) (interface{}, error))
- func (this *BasePeerConnection) ReadRTP(track *webrtc.TrackRemote) (*rtp.Packet, error)
- func (this *BasePeerConnection) RemoveStream(streamId string) error
- func (this *BasePeerConnection) RemoveTrack(trackId string) error
- func (this *BasePeerConnection) ReplaceTrack(oldTrack webrtc.TrackLocal, newTrack webrtc.TrackLocal) error
- func (this *BasePeerConnection) Send(data []byte) error
- func (this *BasePeerConnection) SendText(message string) error
- func (this *BasePeerConnection) SetStatus(status PeerConnectionStatus)
- func (this *BasePeerConnection) Status() PeerConnectionStatus
- func (this *BasePeerConnection) StopReceiver(trackId string) error
- func (this *BasePeerConnection) StopStream(streamId string) error
- func (this *BasePeerConnection) Write(sender *webrtc.RTPSender, buf []byte) error
- func (this *BasePeerConnection) WriteRTP(sender *webrtc.RTPSender, packet *rtp.Packet) error
- type MeetingRoom
- type MessageSlice
- type NegotiateStatus
- type PeerConnectionPool
- type PeerConnectionStatus
- type Sfu
- type SfuPool
- type SignalExtension
- type SignalType
- type WebrtcEvent
- type WebrtcEventType
- type WebrtcSignal
Constants ¶
View Source
const ( MAX_BUFFERED_AMOUNT = 64 * 1024 ICECOMPLETE_TIMEOUT = 5 * 1000 CHANNEL_CLOSING_TIMEOUT = 5 * 1000 )
View Source
const ( WebrtcSignalType_TransceiverRequest = "transceiverRequest" WebrtcSignalType_Renegotiate = "renegotiate" WebrtcSignalType_Sdp = "sdp" WebrtcSignalType_Offer = "offer" WebrtcSignalType_Answer = "answer" WebrtcSignalType_Candidate = "candidate" WebrtcSignalType_Join = "join" )
View Source
const ( RouterType_Mesh = "mesh" RouterType_Sfu = "sfu" RouterType_Mcu = "mcu" RouterIdentity_Publisher = "publisher" RouterIdentity_Subscriber = "subscriber" RouterIdentity_PubSub = "pubsub" )
View Source
const MessageSize = 15
Variables ¶
This section is empty.
Functions ¶
func GetICEServers ¶
func GetICEServers() []webrtc.ICEServer
func Signal ¶ added in v0.1.24
func Signal(webrtcSignal *WebrtcSignal, targetPeerId string) (interface{}, error)
* 调用注册发送信号函数发送信号
Types ¶
type AdvancedPeerConnection ¶ added in v0.1.24
type AdvancedPeerConnection struct { Room *MeetingRoom // contains filtered or unexported fields }
func CreateAdvancedPeerConnection ¶ added in v0.1.24
func CreateAdvancedPeerConnection(peerId string, initiator bool, clientId string, name string, connectPeerId string, connectSessionId string, room *MeetingRoom) *AdvancedPeerConnection
func (*AdvancedPeerConnection) AddTrack ¶ added in v0.1.24
func (this *AdvancedPeerConnection) AddTrack(track webrtc.TrackLocal) (*webrtc.RTPSender, error)
func (*AdvancedPeerConnection) Close ¶ added in v0.1.24
func (this *AdvancedPeerConnection) Close()
* 关闭本节点的wenbrtc连接,并从池中删除
func (*AdvancedPeerConnection) CreateTrack ¶ added in v0.1.24
func (this *AdvancedPeerConnection) CreateTrack(c *webrtc.RTPCodecCapability, trackId string, streamId string) (webrtc.TrackLocal, error)
func (*AdvancedPeerConnection) GetSenders ¶ added in v0.1.24
func (this *AdvancedPeerConnection) GetSenders(streamId string) []*webrtc.RTPSender
func (*AdvancedPeerConnection) GetTrackRemotes ¶ added in v0.1.24
func (this *AdvancedPeerConnection) GetTrackRemotes(streamId string) []*webrtc.TrackRemote
func (*AdvancedPeerConnection) Id ¶ added in v0.1.24
func (this *AdvancedPeerConnection) Id() string
func (*AdvancedPeerConnection) Init ¶ added in v0.1.24
func (this *AdvancedPeerConnection) Init(iceServers []webrtc.ICEServer) error
* 创建新的Webrtc节点
func (*AdvancedPeerConnection) ReadRTP ¶ added in v0.1.24
func (this *AdvancedPeerConnection) ReadRTP(track *webrtc.TrackRemote) (*rtp.Packet, error)
func (*AdvancedPeerConnection) Send ¶ added in v0.1.24
func (this *AdvancedPeerConnection) Send(data []byte) error
* 利用缺省数据通道发送数据
func (*AdvancedPeerConnection) SendText ¶ added in v0.1.24
func (this *AdvancedPeerConnection) SendText(data string) error
* 利用缺省数据通道发送数据
type BasePeerConnection ¶ added in v0.1.24
type BasePeerConnection struct {
// contains filtered or unexported fields
}
func CreateBasePeerConnection ¶ added in v0.1.24
func CreateBasePeerConnection(initiator bool) *BasePeerConnection
func (*BasePeerConnection) AddTrack ¶ added in v0.1.24
func (this *BasePeerConnection) AddTrack(track webrtc.TrackLocal) (*webrtc.RTPSender, error)
* 将本地轨道加入,并存放进流中
func (*BasePeerConnection) BufferedAmount ¶ added in v0.1.24
func (this *BasePeerConnection) BufferedAmount() uint64
func (*BasePeerConnection) Close ¶ added in v0.1.24
func (this *BasePeerConnection) Close()
* 关闭peer
func (*BasePeerConnection) Connected ¶ added in v0.1.24
func (this *BasePeerConnection) Connected()
func (*BasePeerConnection) CreateTrack ¶ added in v0.1.24
func (this *BasePeerConnection) CreateTrack(c *webrtc.RTPCodecCapability, trackId string, streamId string) (webrtc.TrackLocal, error)
*
- 主动创建本地track能够发送和接收媒体信息
func (*BasePeerConnection) Emit ¶ added in v0.1.24
func (this *BasePeerConnection) Emit(name WebrtcEventType, event *WebrtcEvent) (interface{}, error)
* 事件发生,调用外部函数
func (*BasePeerConnection) GetReceiver ¶ added in v0.1.24
func (this *BasePeerConnection) GetReceiver(trackId string) (*webrtc.TrackRemote, *webrtc.RTPReceiver)
func (*BasePeerConnection) GetSender ¶ added in v0.1.24
func (this *BasePeerConnection) GetSender(trackId string) *webrtc.RTPSender
func (*BasePeerConnection) GetSenders ¶ added in v0.1.24
func (this *BasePeerConnection) GetSenders(streamId string) []*webrtc.RTPSender
func (*BasePeerConnection) GetSendersByKind ¶ added in v0.1.24
func (this *BasePeerConnection) GetSendersByKind(kind webrtc.RTPCodecType) []*webrtc.RTPSender
func (*BasePeerConnection) GetTrackRemotes ¶ added in v0.1.24
func (this *BasePeerConnection) GetTrackRemotes(streamId string) []*webrtc.TrackRemote
func (*BasePeerConnection) GetTrackRemotesByKind ¶ added in v0.1.24
func (this *BasePeerConnection) GetTrackRemotesByKind(kind webrtc.RTPCodecType) []*webrtc.TrackRemote
func (*BasePeerConnection) Init ¶ added in v0.1.24
func (this *BasePeerConnection) Init(extension *SignalExtension, localTracks []webrtc.TrackLocal) error
func (*BasePeerConnection) On ¶ added in v0.1.24
func (this *BasePeerConnection) On(name WebrtcEventType, fn func(event *WebrtcEvent) (interface{}, error))
* 注册事件,发生时调用外部函数
func (*BasePeerConnection) ReadRTP ¶ added in v0.1.24
func (this *BasePeerConnection) ReadRTP(track *webrtc.TrackRemote) (*rtp.Packet, error)
func (*BasePeerConnection) RemoveStream ¶ added in v0.1.24
func (this *BasePeerConnection) RemoveStream(streamId string) error
func (*BasePeerConnection) RemoveTrack ¶ added in v0.1.24
func (this *BasePeerConnection) RemoveTrack(trackId string) error
func (*BasePeerConnection) ReplaceTrack ¶ added in v0.1.24
func (this *BasePeerConnection) ReplaceTrack(oldTrack webrtc.TrackLocal, newTrack webrtc.TrackLocal) error
func (*BasePeerConnection) Send ¶ added in v0.1.24
func (this *BasePeerConnection) Send(data []byte) error
* 把要发送的数据送入缓存
func (*BasePeerConnection) SendText ¶ added in v0.1.24
func (this *BasePeerConnection) SendText(message string) error
* 把要发送的数据送入缓存
func (*BasePeerConnection) SetStatus ¶ added in v0.1.24
func (this *BasePeerConnection) SetStatus(status PeerConnectionStatus)
func (*BasePeerConnection) Status ¶ added in v0.1.24
func (this *BasePeerConnection) Status() PeerConnectionStatus
func (*BasePeerConnection) StopReceiver ¶ added in v0.1.24
func (this *BasePeerConnection) StopReceiver(trackId string) error
func (*BasePeerConnection) StopStream ¶ added in v0.1.24
func (this *BasePeerConnection) StopStream(streamId string) error
func (*BasePeerConnection) Write ¶ added in v0.1.24
func (this *BasePeerConnection) Write(sender *webrtc.RTPSender, buf []byte) error
type MeetingRoom ¶ added in v0.1.24
type MessageSlice ¶ added in v0.1.24
type MessageSlice struct {
// contains filtered or unexported fields
}
/把二进制消息分片和汇总
type NegotiateStatus ¶ added in v0.1.24
type NegotiateStatus string
const ( NegotiateStatus_none NegotiateStatus = "none" NegotiateStatus_negotiating NegotiateStatus = "negotiating" //协商过程中 NegotiateStatus_negotiated NegotiateStatus = "negotiated" )
type PeerConnectionPool ¶ added in v0.1.24
type PeerConnectionPool struct {
// contains filtered or unexported fields
}
func GetPeerConnectionPool ¶ added in v0.1.24
func GetPeerConnectionPool() *PeerConnectionPool
func (*PeerConnectionPool) Close ¶ added in v0.1.24
func (this *PeerConnectionPool) Close(peerId string, clientId string) bool
/主动关闭,从池中移除连接
func (*PeerConnectionPool) Emit ¶ added in v0.1.24
func (this *PeerConnectionPool) Emit(name WebrtcEventType, event *WebrtcEvent) (interface{}, error)
func (*PeerConnectionPool) On ¶ added in v0.1.24
func (this *PeerConnectionPool) On(name WebrtcEventType, fn func(event *WebrtcEvent) (interface{}, error))
type PeerConnectionStatus ¶ added in v0.1.24
type PeerConnectionStatus string
const ( PeerConnectionStatus_none PeerConnectionStatus = "none" PeerConnectionStatus_created PeerConnectionStatus = "created" PeerConnectionStatus_init PeerConnectionStatus = "init" PeerConnectionStatus_reconnecting PeerConnectionStatus = "reconnecting" PeerConnectionStatus_failed PeerConnectionStatus = "failed" PeerConnectionStatus_connected PeerConnectionStatus = "connected" //连接是否完全建立,即协商过程结束 PeerConnectionStatus_closed PeerConnectionStatus = "closed" //是否关闭连接完成 )
type Sfu ¶ added in v0.1.24
type Sfu struct {
// contains filtered or unexported fields
}
* 自己实现的SFU sfu是多个peer的集合,一个room可以有多个sfu,但是在一个服务器peer上只能有一个,所以roomId和sfuId相同
type SfuPool ¶ added in v0.1.24
type SfuPool struct {
// contains filtered or unexported fields
}
* 一个服务器上的所有sfu的集合,每个sfu都属于不同的room
func GetSfuPool ¶ added in v0.1.24
func GetSfuPool() *SfuPool
func (*SfuPool) Join ¶ added in v0.1.24
func (this *SfuPool) Join(peerConnection *AdvancedPeerConnection) (*Sfu, error)
* 根据roomId查找是否有sfu,如果存在就加入,不存在,则创建一个sfu并加入
func (*SfuPool) Leave ¶ added in v0.1.24
func (this *SfuPool) Leave(peerConnection *AdvancedPeerConnection) error
* 关闭*AdvancedPeerConnection
type SignalExtension ¶ added in v0.1.24
type SignalExtension struct { PeerId string `json:"peerId,omitempty"` ClientId string `json:"clientId,omitempty"` Name string `json:"name,omitempty"` Room *MeetingRoom `json:"room,omitempty"` IceServers []webrtc.ICEServer `json:"iceServers,omitempty"` }
type SignalType ¶ added in v0.1.24
type SignalType string
type WebrtcEvent ¶ added in v0.1.24
type WebrtcEvent struct { PeerId string `json:"peerId,omitempty"` ClientId string `json:"clientId,omitempty"` Name string `json:"name,omitempty"` ConnectPeerId string `json:"connectPeerId,omitempty"` ConnectSessionId string `json:"connectSessionId,omitempty"` Data interface{} `json:"data,omitempty"` }
type WebrtcEventType ¶ added in v0.1.24
type WebrtcEventType string
/可以注册的事件
const ( WebrtcEventType_created WebrtcEventType = "created" //创建被叫连接 WebrtcEventType_signal WebrtcEventType = "signal" //发送信号 WebrtcEventType_onSignal WebrtcEventType = "onSignal" //接收到信号 WebrtcEventType_connected WebrtcEventType = "connected" WebrtcEventType_closed WebrtcEventType = "closed" WebrtcEventType_status WebrtcEventType = "status" //状态发生变化 WebrtcEventType_message WebrtcEventType = "message" //接收到消息 WebrtcEventType_stream WebrtcEventType = "stream" WebrtcEventType_removeStream WebrtcEventType = "removeStream" WebrtcEventType_track WebrtcEventType = "track" WebrtcEventType_addTrack WebrtcEventType = "addTrack" WebrtcEventType_removeTrack WebrtcEventType = "removeTrack" WebrtcEventType_error WebrtcEventType = "error" WebrtcEventType_iceCandidate WebrtcEventType = "iceCandidate" WebrtcEventType_connectionState WebrtcEventType = "connectionState" WebrtcEventType_iceConnectionState WebrtcEventType = "iceConnectionState" WebrtcEventType_iceGatheringState WebrtcEventType = "iceGatheringState" WebrtcEventType_signalingState WebrtcEventType = "signalingState" WebrtcEventType_iceCompleted WebrtcEventType = "iceCompleted" WebrtcEventType_dataChannelState WebrtcEventType = "dataChannelState" )
type WebrtcSignal ¶ added in v0.1.24
type WebrtcSignal struct { SignalType string `json:"type,omitempty"` Renegotiate bool `json:"renegotiate,omitempty"` TransceiverRequest map[string]interface{} `json:"transceiverRequest,omitempty"` Candidates []*webrtc.ICECandidateInit `json:"candidates,omitempty"` Sdp *webrtc.SessionDescription `json:"sdp,omitempty"` SignalExtension *SignalExtension `json:"extension,omitempty"` }
* 用于交换的signal消息,当type为join的时候,表示需要服务器反拨,发起offer 如果为offer,表示服务器为被叫方,如果router字段不为空,表示有sfu的要求
func Transform ¶ added in v0.1.24
func Transform(payload map[string]interface{}) *WebrtcSignal
/将信号消息转换成信号对象
Source Files
¶
Directories
¶
Path | Synopsis |
---|---|
receive
Package gst provides an easy API to create an appsink pipeline
|
Package gst provides an easy API to create an appsink pipeline |
sink
Package gst provides an easy API to create an appsrc pipeline
|
Package gst provides an easy API to create an appsrc pipeline |
ion
|
|
softphone
Package softphone provides abstractions for SIP over Websocket
|
Package softphone provides abstractions for SIP over Websocket |
Click to show internal directories.
Click to hide internal directories.