Update receiving remote candidate info for webrtc

This commit is contained in:
Alexey Khit
2023-03-01 17:20:33 +03:00
parent 402df50b65
commit df0ab77791
2 changed files with 13 additions and 37 deletions
+12 -36
View File
@@ -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 ""
}
+1 -1
View File
@@ -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,