From cac896ff1d1902fe9a734f19bcc5da264fd3a678 Mon Sep 17 00:00:00 2001 From: guochao Date: Sat, 14 Oct 2023 20:43:07 +0800 Subject: [PATCH] limit data channel name for chat --- cmd/demo-signal-client/main.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/cmd/demo-signal-client/main.go b/cmd/demo-signal-client/main.go index 61f5f46..2d0a3d5 100644 --- a/cmd/demo-signal-client/main.go +++ b/cmd/demo-signal-client/main.go @@ -42,6 +42,8 @@ var ( StyleError = lipgloss.NewStyle().Foreground(lipgloss.Color("red")) StylePeer = lipgloss.NewStyle() StylePeerSelected = lipgloss.NewStyle().Background(lipgloss.Color("gray")) + + dataChannelName = "chat" ) type SignalClient struct { @@ -270,7 +272,7 @@ func (client *SignalClient) OnDiscoverResponse(ctx context.Context, stream proto if err != nil { return } - dataChannel, err := peerConnection.CreateDataChannel("chan", nil) + dataChannel, err := peerConnection.CreateDataChannel(dataChannelName, nil) if err != nil { client.Program.Send(systemMsg(fmt.Sprint("failed to create answer: ", err))) return @@ -407,6 +409,9 @@ func (client SignalClient) GetOrCreatePeerConnection(sender string) (*webrtc.Pee peerConnection.OnDataChannel(func(dc *webrtc.DataChannel) { client.Program.Send(systemMsg(fmt.Sprint("Connected to client " + sender + ": " + dc.Label()))) + if dc.Label() != dataChannelName { + client.Program.Send(fmt.Sprintf("ignored data channel: %v", dc.Label())) + } client.Channels[sender] = dc client.SetupDataChannel(peerConnection, dc, sender) @@ -428,6 +433,10 @@ func (client *SignalClient) SetupDataChannel(pc *webrtc.PeerConnection, dc *webr }) } }) + + dc.OnError(func(err error) { + dc.Close() + }) } func main() {