feat: add sourceUserID to publishedTrack and update TrackAddedData and TrackRemovedData structures

This commit is contained in:
anonpenguin23 2026-02-24 10:16:27 +02:00
parent 25495448ed
commit 80e26f33fb
2 changed files with 18 additions and 3 deletions

View File

@ -33,6 +33,7 @@ var (
// publishedTrack holds a local track being forwarded from a remote source.
type publishedTrack struct {
sourcePeerID string
sourceUserID string
localTrack *webrtc.TrackLocalStaticRTP
remoteTrackSSRC uint32
kind string
@ -294,6 +295,7 @@ func (r *Room) RemovePeer(peerID string) {
for _, trackID := range removed {
r.broadcastMessage(peerID, NewServerMessage(MessageTypeTrackRemoved, &TrackRemovedData{
PeerID: peerID,
UserID: peer.UserID,
TrackID: trackID,
}))
}
@ -348,10 +350,19 @@ func (r *Room) BroadcastTrack(sourcePeerID string, track *webrtc.TrackRemote) {
return
}
// Look up source peer's UserID
r.peersMu.RLock()
var sourceUserID string
if sourcePeer, ok := r.peers[sourcePeerID]; ok {
sourceUserID = sourcePeer.UserID
}
r.peersMu.RUnlock()
// Store for future joiners
r.publishedTracksMu.Lock()
r.publishedTracks[localTrack.ID()] = &publishedTrack{
sourcePeerID: sourcePeerID,
sourceUserID: sourceUserID,
localTrack: localTrack,
remoteTrackSSRC: uint32(track.SSRC()),
kind: track.Kind().String(),
@ -385,6 +396,7 @@ func (r *Room) BroadcastTrack(sourcePeerID string, track *webrtc.TrackRemote) {
}
peer.SendMessage(NewServerMessage(MessageTypeTrackAdded, &TrackAddedData{
PeerID: sourcePeerID,
UserID: sourceUserID,
TrackID: localTrack.ID(),
StreamID: localTrack.StreamID(),
Kind: track.Kind().String(),
@ -417,6 +429,7 @@ func (r *Room) SendExistingTracksTo(peer *Peer) {
}
peer.SendMessage(NewServerMessage(MessageTypeTrackAdded, &TrackAddedData{
PeerID: pt.sourcePeerID,
UserID: pt.sourceUserID,
TrackID: pt.localTrack.ID(),
StreamID: pt.localTrack.StreamID(),
Kind: pt.kind,

View File

@ -101,6 +101,7 @@ type ParticipantLeftData struct {
// TrackAddedData is sent when a new track is available
type TrackAddedData struct {
PeerID string `json:"peerId"`
UserID string `json:"userId"`
TrackID string `json:"trackId"`
StreamID string `json:"streamId"`
Kind string `json:"kind"` // "audio" or "video"
@ -108,9 +109,10 @@ type TrackAddedData struct {
// TrackRemovedData is sent when a track is removed
type TrackRemovedData struct {
PeerID string `json:"peerId"`
TrackID string `json:"trackId"`
Kind string `json:"kind"`
PeerID string `json:"peerId"`
UserID string `json:"userId"`
TrackID string `json:"trackId"`
Kind string `json:"kind"`
}
// TURNCredentialsData provides TURN server credentials