Update receiving remote candidate info for webrtc
This commit is contained in:
+12
-36
@@ -20,6 +20,7 @@ type Conn struct {
|
||||
send int
|
||||
|
||||
offer string
|
||||
remote string
|
||||
closed core.Waiter
|
||||
}
|
||||
|
||||
@@ -34,6 +35,17 @@ func NewConn(pc *webrtc.PeerConnection) *Conn {
|
||||
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) {
|
||||
track := c.getTrack(remote)
|
||||
if track == nil {
|
||||
@@ -110,39 +122,3 @@ func (c *Conn) getTrack(remote *webrtc.TrackRemote) *streamer.Track {
|
||||
|
||||
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) {
|
||||
info := &streamer.Info{
|
||||
Type: "WebRTC",
|
||||
RemoteAddr: c.remote(),
|
||||
RemoteAddr: c.remote,
|
||||
UserAgent: c.UserAgent,
|
||||
Medias: c.medias,
|
||||
Tracks: c.tracks,
|
||||
|
||||
Reference in New Issue
Block a user