Documentation ¶
Overview ¶
Package janus is a Golang implementation of the Janus API, used to interact with the Janus WebRTC Gateway.
Index ¶
- Constants
- func Bool(v bool) *bool
- func Int(v int) *int
- func Int64(v int64) *int64
- func String(v string) *string
- type AckMsg
- type BaseMsg
- type CreateRequest
- type DetachedMsg
- type ErrorData
- type ErrorMsg
- type EventMsg
- type Gateway
- type GenericRequest
- func CreateDestroyIdRequest(id int, secret string) *GenericRequest
- func CreateDestroyRoomIdRequest(room int64, secret string, permanent bool) *GenericRequest
- func CreateExistsRequest(room int64) *GenericRequest
- func CreateGenericRequest(requestType *string, _type *string, room *int64, id *int, secret *string, ...) *GenericRequest
- func CreateInfoRequest(id int, secret string) *GenericRequest
- func CreateListParticipantsRequest(room int64) *GenericRequest
- type Handle
- func (handle *Handle) Detach(ctx context.Context) (*AckMsg, error)
- func (handle *Handle) Message(ctx context.Context, body, jsep interface{}) (*EventMsg, error)
- func (handle *Handle) Request(ctx context.Context, body interface{}) (*SuccessMsg, error)
- func (handle *Handle) Trickle(ctx context.Context, candidate interface{}) (*AckMsg, error)
- func (handle *Handle) TrickleMany(ctx context.Context, candidates interface{}) (*AckMsg, error)
- type HangupMsg
- type InfoMsg
- type MediaMsg
- type Participant
- type PluginData
- type PluginInfo
- type RTPForwardRequest
- type RTPForwarder
- type RTPForwarders
- type Response
- type Room
- type Session
- type SlowLinkMsg
- type SuccessData
- type SuccessMsg
- type TimeoutMsg
- type Transaction
- type WebRTCUpMsg
Constants ¶
const ( Create = "create" Destroy = "destroy" Exists = "exists" Info = "Info" ListParticipants = "listparticipants" RtpForward = "rtp_forward" )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type CreateRequest ¶
type CreateRequest struct { GenericRequest IsPrivate *bool `json:"is_private,omitempty"` Audio *bool `json:"audio,omitempty"` AudioPort *int `json:"audioport,omitempty"` AudioRTCPPort *int `json:"audiortcpport,omitempty"` AudioPT *int `json:"audiopt,omitempty"` AudioRTPMap *string `json:"audiortpmap,omitempty"` AudioCodec *string `json:"audiocodec,omitempty"` Bitrate *int64 `json:"bitrate,omitempty"` FirFreq *int `json:"fir_freq,omitempty"` Publishers *int `json:"publishers,omitempty"` TransportWideCcExt *bool `json:"transport_wide_cc_ext,omitempty"` Video *bool `json:"video,omitempty"` VideoPort *int `json:"videoport,omitempty"` VideoRTCPPort *int `json:"videortcpport,omitempty"` VideoPT *int `json:"videopt,omitempty"` VideoRTPMap *string `json:"videortpmap,omitempty"` VideoCodec *string `json:"videocodec,omitempty"` VideoOrientExt *string `json:"videoorient_ext,omitempty"` }
type DetachedMsg ¶
type DetachedMsg struct{}
type EventMsg ¶
type EventMsg struct { Plugindata PluginData Jsep map[string]interface{} Session uint64 `json:"session_id"` Handle uint64 `json:"sender"` }
type Gateway ¶
type Gateway struct { // Sessions is a map of the currently active sessions to the gateway. Sessions map[uint64]*Session // Access to the Sessions map should be synchronized with the Gateway.Lock() // and Gateway.Unlock() methods provided by the embeded sync.Mutex. sync.Mutex // contains filtered or unexported fields }
Gateway represents a connection to an instance of the Janus Gateway.
func (*Gateway) Close ¶
func (gateway *Gateway) Close(code websocket.StatusCode, reason string) error
Close closes the underlying connection to the Gateway.
func (*Gateway) Create ¶
Create sends a create request to the Gateway. On success, a new Session will be returned and error will be nil.
func (*Gateway) GetErrChan ¶
GetErrChan returns a channels through which the caller can check and react to connectivity errors
type GenericRequest ¶
type GenericRequest struct { Request *string `json:"request,omitempty"` Type *string `json:"type,omitempty"` Room *int64 `json:"room,omitempty"` Id *int `json:"id,omitempty"` Secret *string `json:"secret,omitempty"` Permanent *bool `json:"permanent,omitempty"` }
func CreateDestroyIdRequest ¶
func CreateDestroyIdRequest(id int, secret string) *GenericRequest
func CreateDestroyRoomIdRequest ¶
func CreateDestroyRoomIdRequest(room int64, secret string, permanent bool) *GenericRequest
func CreateExistsRequest ¶
func CreateExistsRequest(room int64) *GenericRequest
func CreateGenericRequest ¶
func CreateInfoRequest ¶
func CreateInfoRequest(id int, secret string) *GenericRequest
func CreateListParticipantsRequest ¶
func CreateListParticipantsRequest(room int64) *GenericRequest
type Handle ¶
type Handle struct { // ID is the handle_id of this plugin handle ID uint64 // Type // pub or sub Type string //User // Userid User string // Events is a receive only channel that can be used to receive events // related to this handle from the gateway. Events chan interface{} // contains filtered or unexported fields }
Handle represents a handle to a plugin instance on the Gateway.
func (*Handle) Detach ¶
Detach sends a detach request to the Gateway to remove this handle. On success, an AckMsg will be returned and error will be nil.
func (*Handle) Message ¶
Message sends a message request to a plugin handle on the Gateway. body should be the plugin data to be passed to the plugin, and jsep should contain an optional SDP offer/answer to establish a WebRTC PeerConnection. On success, an EventMsg will be returned and error will be nil.
func (*Handle) Request ¶
func (handle *Handle) Request(ctx context.Context, body interface{}) (*SuccessMsg, error)
Request sends a sync request
func (*Handle) Trickle ¶
Trickle sends a trickle request to the Gateway as part of establishing a new PeerConnection with a plugin. candidate should be a single ICE candidate, or a completed object to signify that all candidates have been sent:
{ "completed": true }
On success, an AckMsg will be returned and error will be nil.
func (*Handle) TrickleMany ¶
TrickleMany sends a trickle request to the Gateway as part of establishing a new PeerConnection with a plugin. candidates should be an array of ICE candidates. On success, an AckMsg will be returned and error will be nil.
type Participant ¶
type Participant struct { ID *int64 `json:"id,omitempty"` Display *string `json:"display,omitempty"` Publisher *bool `json:"publisher,omitempty"` Talking *bool `json:"talking,omitempty"` Setup *bool `json:"setup,omitempty"` Muted *bool `json:"muted,omitempty"` Username *string `json:"username,omitempty"` }
type PluginData ¶
type PluginInfo ¶
type RTPForwardRequest ¶
type RTPForwardRequest struct { GenericRequest PublisherID *int `json:"publisher_id,omitempty"` Host *string `json:"host,omitempty"` HostFamily *string `json:"host_family,omitempty"` VideoPort *int `json:"video_port,omitempty"` VideoRTCPPort *int `json:"video_rtcp_port,omitempty"` AlwaysOn *bool `json:"always_on,omitempty"` }
type RTPForwarder ¶
type RTPForwarder struct { AudioStreamID *int64 `json:"audio_stream_id,omitempty"` VideoStreamID *int64 `json:"video_stream_id,omitempty"` DataStreamID *int64 `json:"data_stream_id,omitempty"` IP *string `json:"ip,omitempty"` Port *int `json:"port,omitempty"` RTCPPort *int `json:"rtcp_port,omitempty"` SSRC *int64 `json:"ssrc,omitempty"` Pt *int64 `json:"pt,omitempty"` SubStream *string `json:"substream,omitempty"` SRTP *bool `json:"srtp,omitempty"` }
type RTPForwarders ¶
type RTPForwarders struct { PublisherID *int64 `json:"publisher_id,omitempty"` RTPForwarder *[]RTPForwarder `json:"rtp_forwarder,omitempty"` StreamID *int64 `json:"stream_id,omitempty"` IP *string `json:"ip,omitempty"` Port *int `json:"port,omitempty"` SSRC *int64 `json:"ssrc,omitempty"` Codec *string `json:"codec,omitempty"` PType *int64 `json:"ptype,omitempty"` SRTP *bool `json:"srtp,omitempty"` AlwaysOn *bool `json:"always_on,omitempty"` }
type Response ¶
type Response struct { VideoRoom *string `json:"videoroom,omitempty"` AudioBridge *string `json:"audiobridge,omitempty"` TextRoom *string `json:"textroom,omitempty"` Streaming string `json:"streaming,omitempty"` Room *int64 `json:"room,omitempty"` Exists *bool `json:"exists,omitempty"` Participants *[]Participant `json:"participants,omitempty"` Rooms *[]Room `json:"list,omitempty"` Info *Room `json:"info,omitempty"` RTPForwarders *[]RTPForwarders `json:"rtp_forwarders,omitempty"` }
type Room ¶
type Room struct { Room *int64 `json:"room,omitempty"` Description *string `json:"description,omitempty"` PinRequired *bool `json:"pin_required,omitempty"` MaxPublishers *int `json:"max_publishers,omitempty"` Bitrate *int `json:"bitrate,omitempty"` BitrateCap *bool `json:"bitrate_cap,omitempty"` FirFreq *int `json:"fir_freq,omitempty"` AudioCodec *string `json:"audiocodec,omitempty"` VideoCodec *string `json:"videocodec,omitempty"` Record *bool `json:"record,omitempty"` RecordDir *string `json:"record_dir,omitempty"` LockRecord *bool `json:"lock_record,omitempty"` NumParticipants *int `json:"num_participants,omitempty"` SamplingRate *int `json:"sampling_rate,omitempty"` ID *int64 `json:"id,omitempty"` Name *string `json:"name,omitempty"` Type *string `json:"type,omitempty"` Metadata *string `json:"metadata,omitempty"` Enabled *bool `json:"enabled,omitempty"` AudioAgeMs *int `json:"audio_age_ms,omitempty"` VideoAgeMs *int `json:"video_age_ms,omitempty"` Pin *string `json:"pin,omitempty"` IsPrivate *string `json:"is_private,omitempty"` Viewers *int `json:"viewers,omitempty"` Audio *bool `json:"audio,omitempty"` AudioPort *int `json:"audioport,omitempty"` AudioRTCPPort *int `json:"audiortcpport,omitempty"` AudioPt *int `json:"audiopt,omitempty"` AudioRTPMap *string `json:"audiortpmap,omitempty"` AudioFMTP *string `json:"audiofmtp,omitempty"` Video *bool `json:"video,omitempty"` VideoPort *int `json:"videoport,omitempty"` VideoRTCPPort *int `json:"videortcpport,omitempty"` VideoPt *int `json:"videopt,omitempty"` VideoRTPMap *string `json:"videortpmap,omitempty"` VideoFMTP *int `json:"videofmtp,omitempty"` }
type Session ¶
type Session struct { // ID is the session_id of this session ID uint64 // Handles is a map of plugin handles within this session Handles map[uint64]*Handle Events chan interface{} // Access to the Handles map should be synchronized with the Session.Lock() // and Session.Unlock() methods provided by the embeded sync.Mutex. sync.Mutex // contains filtered or unexported fields }
Session represents a session instance on the Janus Gateway.
func (*Session) Attach ¶
Attach sends an attach request to the Gateway within this session. plugin should be the unique string of the plugin to attach to. On success, a new Handle will be returned and error will be nil.
type SlowLinkMsg ¶
type SuccessData ¶
type SuccessData struct {
ID uint64
}
type SuccessMsg ¶
type SuccessMsg struct { Data SuccessData PluginData PluginData Session uint64 `json:"session_id"` Handle uint64 `json:"sender"` }
type TimeoutMsg ¶
type TimeoutMsg struct {
Session uint64 `json:"session_id"`
}