Update receiving remote candidate info for webrtc
This commit is contained in:
+12
-36
@@ -20,6 +20,7 @@ type Conn struct {
|
|||||||
send int
|
send int
|
||||||
|
|
||||||
offer string
|
offer string
|
||||||
|
remote string
|
||||||
closed core.Waiter
|
closed core.Waiter
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,6 +35,17 @@ func NewConn(pc *webrtc.PeerConnection) *Conn {
|
|||||||
c.Fire(channel)
|
c.Fire(channel)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
pc.OnICEConnectionStateChange(func(state webrtc.ICEConnectionState) {
|
||||||
|
if state != webrtc.ICEConnectionStateChecking {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
pc.SCTP().Transport().ICETransport().OnSelectedCandidatePairChange(
|
||||||
|
func(pair *webrtc.ICECandidatePair) {
|
||||||
|
c.remote = pair.Remote.String()
|
||||||
|
},
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
pc.OnTrack(func(remote *webrtc.TrackRemote, _ *webrtc.RTPReceiver) {
|
pc.OnTrack(func(remote *webrtc.TrackRemote, _ *webrtc.RTPReceiver) {
|
||||||
track := c.getTrack(remote)
|
track := c.getTrack(remote)
|
||||||
if track == nil {
|
if track == nil {
|
||||||
@@ -110,39 +122,3 @@ func (c *Conn) getTrack(remote *webrtc.TrackRemote) *streamer.Track {
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Conn) remote() string {
|
|
||||||
if c.pc == nil {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, trans := range c.pc.GetTransceivers() {
|
|
||||||
if trans == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
receiver := trans.Receiver()
|
|
||||||
if receiver == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
transport := receiver.Transport()
|
|
||||||
if transport == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
iceTransport := transport.ICETransport()
|
|
||||||
if iceTransport == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
pair, _ := iceTransport.GetSelectedCandidatePair()
|
|
||||||
if pair == nil || pair.Remote == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
return pair.Remote.String()
|
|
||||||
}
|
|
||||||
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ func (c *Conn) AddTrack(media *streamer.Media, track *streamer.Track) *streamer.
|
|||||||
func (c *Conn) MarshalJSON() ([]byte, error) {
|
func (c *Conn) MarshalJSON() ([]byte, error) {
|
||||||
info := &streamer.Info{
|
info := &streamer.Info{
|
||||||
Type: "WebRTC",
|
Type: "WebRTC",
|
||||||
RemoteAddr: c.remote(),
|
RemoteAddr: c.remote,
|
||||||
UserAgent: c.UserAgent,
|
UserAgent: c.UserAgent,
|
||||||
Medias: c.medias,
|
Medias: c.medias,
|
||||||
Tracks: c.tracks,
|
Tracks: c.tracks,
|
||||||
|
|||||||
Reference in New Issue
Block a user