peer

package
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 26, 2021 License: AGPL-3.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RouterType_Mesh = "mesh"
	RouterType_Sfu  = "sfu"
	RouterType_Mcu  = "mcu"

	RouterIdentity_Publisher  = "publisher"
	RouterIdentity_Subscriber = "subscriber"
	RouterIdentity_PubSub     = "pubsub"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type IWebrtcPeer

type IWebrtcPeer interface {
	Id() string
	RegistEvent(name string, fn func(event *PoolEvent) (interface{}, error)) bool
	UnregistEvent(name string) bool
	EmitEvent(name string, event *PoolEvent) (interface{}, error)
	Create(targetPeerId string, iceServer []webrtc.ICEServer, initiator bool, options *webrtc2.WebrtcOption, router *simplepeer.Router)
	Router() *simplepeer.Router
	Signal(webrtcSignal *simplepeer.WebrtcSignal)
	Connected() bool
	GetPeer() *p2p.NetPeer
	SetPeer(connectPeerId string, connectSessionId string, peerType string)
	Send(data []byte) error
	SendText(data string) error
	Destroy(err error)
	ReadRTP(track *webrtc.TrackRemote) (*rtp.Packet, error)
	WriteRTP(sender *webrtc.RTPSender, packet *rtp.Packet) error
	CreateTrack(c *webrtc.RTPCodecCapability, trackId string, streamId string) (webrtc.TrackLocal, error)
	AddTrack(track webrtc.TrackLocal) (*webrtc.RTPSender, error)
	GetSenders(streamId string) []*webrtc.RTPSender
	GetTrackRemotes(streamId string) []*webrtc.TrackRemote
}

type PionPeer

type PionPeer struct {
	*p2p.NetPeer
	// contains filtered or unexported fields
}

func (*PionPeer) Connected

func (this *PionPeer) Connected() bool

* 获取本节点的webrtc连接状态

func (*PionPeer) Create

func (this *PionPeer) Create(targetPeerId string, initiator bool, options *webrtc2.WebrtcOption, iceServer []webrtc.ICEServer)

func (*PionPeer) Destroy

func (this *PionPeer) Destroy(err error)

func (*PionPeer) EmitEvent

func (this *PionPeer) EmitEvent(name string, event *PoolEvent) (interface{}, error)

func (*PionPeer) Id

func (this *PionPeer) Id() string

func (*PionPeer) RegistEvent

func (this *PionPeer) RegistEvent(name string, fn func(event *PoolEvent) (interface{}, error))

func (*PionPeer) Send

func (this *PionPeer) Send(data []byte) error

func (*PionPeer) SendText

func (this *PionPeer) SendText(message string) error

func (*PionPeer) Signal

func (this *PionPeer) Signal(webrtcSignal *simplepeer.WebrtcSignal)

* 设置本节点的信号

func (*PionPeer) UnregistEvent

func (this *PionPeer) UnregistEvent(name string) bool

type PoolEvent

type PoolEvent struct {
	Name   string
	Source IWebrtcPeer
	Data   interface{}
}

type Sfu

type Sfu struct {
	// contains filtered or unexported fields
}

* sfu是多个peer的集合,一个room可以有多个sfu,但是在一个服务器peer上只能有一个,所以roomId和sfuId相同

func Create

func Create(sfuId string) *Sfu

* 创建新的SFU

type SfuPool

type SfuPool struct {
	// contains filtered or unexported fields
}

* 一个服务器上的所有sfu的集合,每个sfu都属于不同的room

func GetSfuPool

func GetSfuPool() *SfuPool

func (*SfuPool) Destroy

func (this *SfuPool) Destroy(roomId string) error

func (*SfuPool) Get

func (this *SfuPool) Get(roomId string) *Sfu

func (*SfuPool) Join

func (this *SfuPool) Join(webrtcPeer IWebrtcPeer) (*Sfu, error)

* 根据roomId查找是否有sfu,如果存在就加入,不存在,则创建一个sfu并加入

func (*SfuPool) Leave

func (this *SfuPool) Leave(webrtcPeer IWebrtcPeer) error

* 关闭IWebrtcPeer

type WebrtcPeerPool

type WebrtcPeerPool struct {
	// contains filtered or unexported fields
}

func GetWebrtcPeerPool

func GetWebrtcPeerPool() *WebrtcPeerPool

func (*WebrtcPeerPool) EmitEvent

func (this *WebrtcPeerPool) EmitEvent(name string, event *PoolEvent) (interface{}, error)

func (*WebrtcPeerPool) Receive

func (this *WebrtcPeerPool) Receive(netPeer *p2p.NetPeer, payload map[string]interface{})

*

  • 接收到signal的场景,有如下多张场景
  • 1.自己是被动方,而且同peerId的连接从没有创建过
  • @param peerId
  • @param connectSessionId
  • @param data

func (*WebrtcPeerPool) RegistEvent

func (this *WebrtcPeerPool) RegistEvent(name string, fn func(event *PoolEvent) (interface{}, error))

func (*WebrtcPeerPool) UnregistEvent

func (this *WebrtcPeerPool) UnregistEvent(name string) bool

type WebrtcSimplePeer

type WebrtcSimplePeer struct {
	*p2p.NetPeer
	// contains filtered or unexported fields
}

func (*WebrtcSimplePeer) AddTrack

func (this *WebrtcSimplePeer) AddTrack(track webrtc.TrackLocal) (*webrtc.RTPSender, error)

func (*WebrtcSimplePeer) Connected

func (this *WebrtcSimplePeer) Connected() bool

* 获取本节点的webrtc连接状态

func (*WebrtcSimplePeer) Create

func (this *WebrtcSimplePeer) Create(targetPeerId string, iceServer []webrtc.ICEServer, initiator bool, options *webrtc2.WebrtcOption, router *simplepeer.Router)

* 创建新的Webrtc节点

func (*WebrtcSimplePeer) CreateTrack

func (this *WebrtcSimplePeer) CreateTrack(c *webrtc.RTPCodecCapability, trackId string, streamId string) (webrtc.TrackLocal, error)

func (*WebrtcSimplePeer) Destroy

func (this *WebrtcSimplePeer) Destroy(err error)

* 关闭本节点的wenbrtc连接,并从池中删除

func (*WebrtcSimplePeer) EmitEvent

func (this *WebrtcSimplePeer) EmitEvent(name string, event *PoolEvent) (interface{}, error)

func (*WebrtcSimplePeer) GetPeer

func (this *WebrtcSimplePeer) GetPeer() *p2p.NetPeer

func (*WebrtcSimplePeer) GetSenders

func (this *WebrtcSimplePeer) GetSenders(streamId string) []*webrtc.RTPSender

func (*WebrtcSimplePeer) GetTrackRemotes

func (this *WebrtcSimplePeer) GetTrackRemotes(streamId string) []*webrtc.TrackRemote

func (*WebrtcSimplePeer) Id

func (this *WebrtcSimplePeer) Id() string

func (*WebrtcSimplePeer) ReadRTP

func (this *WebrtcSimplePeer) ReadRTP(track *webrtc.TrackRemote) (*rtp.Packet, error)

func (*WebrtcSimplePeer) RegistEvent

func (this *WebrtcSimplePeer) RegistEvent(name string, fn func(event *PoolEvent) (interface{}, error)) bool

func (*WebrtcSimplePeer) Router

func (this *WebrtcSimplePeer) Router() *simplepeer.Router

func (*WebrtcSimplePeer) Send

func (this *WebrtcSimplePeer) Send(data []byte) error

* 利用缺省数据通道发送数据

func (*WebrtcSimplePeer) SendText

func (this *WebrtcSimplePeer) SendText(data string) error

* 利用缺省数据通道发送数据

func (*WebrtcSimplePeer) SetPeer

func (this *WebrtcSimplePeer) SetPeer(connectPeerId string, connectSessionId string, peerType string)

func (*WebrtcSimplePeer) Signal

func (this *WebrtcSimplePeer) Signal(webrtcSignal *simplepeer.WebrtcSignal)

* 设置本节点的信号

func (*WebrtcSimplePeer) UnregistEvent

func (this *WebrtcSimplePeer) UnregistEvent(name string) bool

func (*WebrtcSimplePeer) WriteRTP

func (this *WebrtcSimplePeer) WriteRTP(sender *webrtc.RTPSender, packet *rtp.Packet) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL