From 8a3b3f14cb1df276b4a7406ff8eb3a755774d65f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Fri, 12 Feb 2021 23:45:16 +0100 Subject: [PATCH] WebRTC channel from server. --- internal/webrtc/manager.go | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/internal/webrtc/manager.go b/internal/webrtc/manager.go index 83713cb3..06722ebf 100644 --- a/internal/webrtc/manager.go +++ b/internal/webrtc/manager.go @@ -188,7 +188,7 @@ func (manager *WebRTCManagerCtx) CreatePeer(session types.Session, videoID strin return nil, err } - _, err = connection.CreateDataChannel("data", nil) + dataChannel, err := connection.CreateDataChannel("data", nil) if err != nil { return nil, err } @@ -213,12 +213,6 @@ func (manager *WebRTCManagerCtx) CreatePeer(session types.Session, videoID strin } } - peer := &WebRTCPeerCtx{ - api: api, - connection: connection, - changeVideo: changeVideo, - } - connection.OnConnectionStateChange(func(state webrtc.PeerConnectionState) { switch state { case webrtc.PeerConnectionStateConnected: @@ -238,21 +232,23 @@ func (manager *WebRTCManagerCtx) CreatePeer(session types.Session, videoID strin } }) - connection.OnDataChannel(func(channel *webrtc.DataChannel) { - peer.dataChannel = channel + dataChannel.OnMessage(func(message webrtc.DataChannelMessage) { + if !session.IsHost() { + return + } - channel.OnMessage(func(message webrtc.DataChannelMessage) { - if !session.IsHost() { - return - } - - if err = manager.handle(message); err != nil { - logger.Warn().Err(err).Msg("data handle failed") - } - }) + if err = manager.handle(message); err != nil { + logger.Warn().Err(err).Msg("data handle failed") + } + }) + + session.SetWebRTCPeer(&WebRTCPeerCtx{ + api: api, + connection: connection, + changeVideo: changeVideo, + dataChannel: dataChannel, }) - session.SetWebRTCPeer(peer) return connection.LocalDescription(), nil }