Documentation
¶
Index ¶
- Variables
- func CheckRoom(c *gin.Context)
- func Clone(dst, source interface{}) error
- func ConnectBroadcasterTransport(c *gin.Context)
- func CreateBroadcaster(c *gin.Context)
- func CreateBroadcasterConsumer(c *gin.Context)
- func CreateBroadcasterDataConsumer(c *gin.Context)
- func CreateBroadcasterDataProducerRequest(c *gin.Context)
- func CreateBroadcasterProducer(c *gin.Context)
- func CreateBroadcasterTransport(c *gin.Context)
- func DelBroadcaster(c *gin.Context)
- func GetOutboundIP() string
- func GetRoom(c *gin.Context)
- func InitLogger()
- func NewBool(b bool) *bool
- func NewServer(config Config)
- func Run()
- type Bot
- type Config
- type Dir
- type H
- type HTTPSConfig
- type MediasoupConfig
- type Room
- func (r *Room) Close()
- func (r *Room) Closed() bool
- func (r *Room) ConnectBroadcasterTransport(request proto.ConnectBroadcasterTransportRequest) (err error)
- func (r *Room) CreateBroadcaster(request proto.PeerInfo) (rsp H, err error)
- func (r *Room) CreateBroadcasterConsumer(request proto.CreateBroadcasterConsumerRequest) (rsp proto.CreateBroadcasterConsumerResponse, err error)
- func (r *Room) CreateBroadcasterDataConsumer(request proto.CreateBroadcasterDataConsumerRequest) (rsp proto.CreateBroadcasterDataConsumerResponse, err error)
- func (r *Room) CreateBroadcasterDataProducer(request proto.CreateBroadcasterDataProducerRequest) (rsp proto.CreateBroadcasterDataProducerResponse, err error)
- func (r *Room) CreateBroadcasterProducer(request proto.CreateBroadcasterProducerRequest) (rsp proto.CreateBroadcasterProducerResponse, err error)
- func (r *Room) CreateBroadcasterTransport(request proto.CreateBroadcasterTransportRequest) (rsp H, err error)
- func (r *Room) DeleteBroadcaster(broadcasterId string) (err error)
- func (r *Room) GetRouterRtpCapabilities() mediasoup.RtpCapabilities
- func (r *Room) HandleProtooConnection(peerId string, transport protoo.Transport) (err error)
- func (r *Room) LogStatus()
- type Server
- type TLSConfig
- type WebRtcTransportOptions
Constants ¶
This section is empty.
Variables ¶
View Source
var Assets embed.FS
View Source
var ( DefaultConfig = Config{ Domain: "localhost", Https: HTTPSConfig{ ListenIp: "0.0.0.0", ListenPort: 4443, TLS: TLSConfig{ Cert: filepath.Join(dirname, "certs", "fullchain.pem"), Key: filepath.Join(dirname, "certs", "privkey.key"), }, }, Mediasoup: MediasoupConfig{ NumWorkers: runtime.NumCPU(), WorkerSettings: mediasoup.WorkerSettings{ LogLevel: "warn", LogTags: []mediasoup.WorkerLogTag{ "info", "ice", "dtls", "rtp", "srtp", "rtcp", "rtx", "bwe", "score", "simulcast", "svc", "sctp", }, RtcMinPort: 40000, RtcMaxPort: 49999, }, RouterOptions: mediasoup.RouterOptions{ MediaCodecs: []*mediasoup.RtpCodecCapability{ { Kind: mediasoup.MediaKind_Audio, MimeType: "audio/opus", ClockRate: 48000, Channels: 2, }, { Kind: mediasoup.MediaKind_Video, MimeType: "video/VP8", ClockRate: 90000, Parameters: mediasoup.RtpCodecSpecificParameters{ XGoogleStartBitrate: 1000, }, }, { Kind: mediasoup.MediaKind_Video, MimeType: "video/VP9", ClockRate: 90000, Parameters: mediasoup.RtpCodecSpecificParameters{ ProfileId: "2", XGoogleStartBitrate: 1000, }, }, { Kind: mediasoup.MediaKind_Video, MimeType: "video/h264", ClockRate: 90000, Parameters: mediasoup.RtpCodecSpecificParameters{ RtpParameter: h264.RtpParameter{ PacketizationMode: 1, ProfileLevelId: "42e01f", LevelAsymmetryAllowed: 1, }, XGoogleStartBitrate: 1000, }, }, { Kind: mediasoup.MediaKind_Video, MimeType: "video/h264", ClockRate: 90000, Parameters: mediasoup.RtpCodecSpecificParameters{ RtpParameter: h264.RtpParameter{ PacketizationMode: 1, ProfileLevelId: "4d0032", LevelAsymmetryAllowed: 1, }, XGoogleStartBitrate: 1000, }, }, }, }, WebRtcTransportOptions: WebRtcTransportOptions{ ListenIps: []mediasoup.TransportListenIp{ { Ip: GetOutboundIP(), AnnouncedIp: GetOutboundIP(), }, }, InitialAvailableOutgoingBitrate: 1000000, MaxSctpMessageSize: 262144, MaxIncomingBitrate: 1500000, }, PlainTransportOptions: mediasoup.PlainTransportOptions{ ListenIp: mediasoup.TransportListenIp{ Ip: GetOutboundIP(), AnnouncedIp: GetOutboundIP(), }, MaxSctpMessageSize: 262144, }, }, } )
View Source
var L *zerolog.Logger
View Source
var NewLogger = func(name string) *zerolog.Logger { f, err := os.OpenFile("./logs/server.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { fmt.Println(err) } w := zerolog.ConsoleWriter{ Out: f, TimeFormat: time.RFC3339, } shouldDebug := true level := zerolog.InfoLevel if shouldDebug { level = zerolog.DebugLevel } logger := zerolog.New(w).With().Timestamp().Str(zerolog.CallerFieldName, name).Caller().Logger() logger.Level(level) return &logger }
Functions ¶
func CheckRoom ¶
*
- For every API request, verify that the roomId in the path matches and
- existing room.
func CreateBroadcasterConsumer ¶
*
- POST API to create a mediasoup Consumer associated to a Broadcaster.
- The exact Transport in which the Consumer must be created is signaled in
- the URL path. Query parameters must include the desired producerId to
- consume.
func CreateBroadcasterDataProducerRequest ¶
*
- POST API to create a mediasoup DataProducer associated to a Broadcaster.
- The exact Transport in which the DataProducer must be created is signaled in
func CreateBroadcasterProducer ¶
*
- POST API to create a mediasoup Producer associated to a Broadcaster.
- The exact Transport in which the Producer must be created is signaled in
- the URL path. Body parameters include kind and rtpParameters of the
- Producer.
func CreateBroadcasterTransport ¶
*
- POST API to create a mediasoup Transport associated to a Broadcaster.
- It can be a PlainTransport or a WebRtcTransport depending on the
- type parameters in the body. There are also additional parameters for
- PlainTransport.
func InitLogger ¶
func InitLogger()
Types ¶
type Bot ¶
type Bot struct {
// contains filtered or unexported fields
}
func (Bot) DataProducer ¶
func (b Bot) DataProducer() *mediasoup.DataProducer
type Config ¶
type Config struct { Domain string `json:"domain,omitempty"` Https HTTPSConfig `json:"https,omitempty"` Mediasoup MediasoupConfig `json:"mediasoup,omitempty"` }
type HTTPSConfig ¶
type MediasoupConfig ¶
type MediasoupConfig struct { NumWorkers int `json:"numWorkers,omitempty"` WorkerSettings mediasoup.WorkerSettings `json:"workerSettings,omitempty"` RouterOptions mediasoup.RouterOptions `json:"routerOptions,omitempty"` WebRtcTransportOptions WebRtcTransportOptions `json:"webRtcTransportOptions,omitempty"` PlainTransportOptions mediasoup.PlainTransportOptions `json:"plainTransportOptions,omitempty"` }
type Room ¶
type Room struct { eventemitter.IEventEmitter // contains filtered or unexported fields }
func CreateRoom ¶
func (*Room) ConnectBroadcasterTransport ¶
func (r *Room) ConnectBroadcasterTransport(request proto.ConnectBroadcasterTransportRequest) (err error)
*
- Connect a Broadcaster mediasoup WebRtcTransport.
func (*Room) CreateBroadcaster ¶
*
- Create a Broadcaster. This is for HTTP API requests (see server.js).
func (*Room) CreateBroadcasterConsumer ¶
func (r *Room) CreateBroadcasterConsumer(request proto.CreateBroadcasterConsumerRequest) (rsp proto.CreateBroadcasterConsumerResponse, err error)
func (*Room) CreateBroadcasterDataConsumer ¶
func (r *Room) CreateBroadcasterDataConsumer(request proto.CreateBroadcasterDataConsumerRequest) (rsp proto.CreateBroadcasterDataConsumerResponse, err error)
func (*Room) CreateBroadcasterDataProducer ¶
func (r *Room) CreateBroadcasterDataProducer(request proto.CreateBroadcasterDataProducerRequest) (rsp proto.CreateBroadcasterDataProducerResponse, err error)
func (*Room) CreateBroadcasterProducer ¶
func (r *Room) CreateBroadcasterProducer(request proto.CreateBroadcasterProducerRequest) (rsp proto.CreateBroadcasterProducerResponse, err error)
*
- Create a mediasoup Producer associated to a Broadcaster.
func (*Room) CreateBroadcasterTransport ¶
func (r *Room) CreateBroadcasterTransport(request proto.CreateBroadcasterTransportRequest) (rsp H, err error)
*
- Create a mediasoup Transport associated to a Broadcaster. It can be a
- PlainTransport or a WebRtcTransport.
func (*Room) GetRouterRtpCapabilities ¶
func (r *Room) GetRouterRtpCapabilities() mediasoup.RtpCapabilities
func (*Room) HandleProtooConnection ¶
type WebRtcTransportOptions ¶
type WebRtcTransportOptions struct { /** * Listening IP address or addresses in order of preference (first one is the * preferred one). */ ListenIps []mediasoup.TransportListenIp `json:"listenIps,omitempty"` /** * Listen in UDP. Default true. */ EnableUdp *bool `json:"enableUdp,omitempty"` /** * Listen in TCP. Default false. */ EnableTcp bool `json:"enableTcp,omitempty"` /** * Prefer UDP. Default false. */ PreferUdp bool `json:"preferUdp,omitempty"` /** * Prefer TCP. Default false. */ PreferTcp bool `json:"preferTcp,omitempty"` /** * Initial available outgoing bitrate (in bps). Default 600000. */ InitialAvailableOutgoingBitrate uint32 `json:"initialAvailableOutgoingBitrate,omitempty"` /** * Create a SCTP association. Default false. */ EnableSctp bool `json:"enableSctp,omitempty"` /** * SCTP streams uint32. */ NumSctpStreams mediasoup.NumSctpStreams `json:"numSctpStreams,omitempty"` /** * Maximum allowed size for SCTP messages sent by DataProducers. * Default 262144. */ MaxSctpMessageSize int `json:"maxSctpMessageSize,omitempty"` /** * Maximum SCTP send buffer used by DataConsumers. * Default 262144. */ SctpSendBufferSize int `json:"sctpSendBufferSize,omitempty"` /** * Custom application data. */ AppData interface{} `json:"appData,omitempty"` // Additional options that are not part of WebRtcTransportOptions. MaxIncomingBitrate int `json:"maxIncomingBitrate,omitempty"` }
Click to show internal directories.
Click to hide internal directories.