@@ -103,6 +103,7 @@ type PeerConnectionState struct {
103103 DTLSConnectionState dtls.State
104104
105105 SSRCAudio , SSRCVideo webrtc.SSRC
106+ SRTPState map [uint32 ]uint32
106107}
107108
108109var (
@@ -140,17 +141,25 @@ func main() {
140141 json .NewEncoder (w ).Encode (& out )
141142 })
142143
144+ go func () {
145+ for range time .NewTicker (2 * time .Second ).C {
146+ serialize ()
147+ }
148+ }()
149+
143150 fmt .Println ("Open http://localhost:8080 to access this demo" )
144151 panic (http .ListenAndServe (":8080" , nil ))
145152}
146153
147154func doSignaling (w http.ResponseWriter , r * http.Request ) {
155+ s := webrtc.SettingEngine {}
156+ s .SetSRTPProtectionProfiles (dtls .SRTP_AEAD_AES_128_GCM )
148157 m := & webrtc.MediaEngine {}
149158 if err := m .RegisterDefaultCodecs (); err != nil {
150159 panic (err )
151160 }
152161
153- peerConnection , err := webrtc .NewAPI (webrtc .WithMediaEngine (m )).NewPeerConnection (webrtc.Configuration {})
162+ peerConnection , err := webrtc .NewAPI (webrtc .WithMediaEngine (m ), webrtc . WithSettingEngine ( s ) ).NewPeerConnection (webrtc.Configuration {})
154163 if err != nil {
155164 panic (err )
156165 }
@@ -246,10 +255,10 @@ func serialize() {
246255 DTLSConnectionState : dtlsConn .ConnectionState (),
247256 SSRCAudio : SSRCAudio ,
248257 SSRCVideo : SSRCVideo ,
258+ SRTPState : dtlsTransport .GetSRTPState (),
249259 })
250260 }
251261
252- fmt .Printf ("Saving %d sessions to '%s'\n " , len (state .PeerConnectionState ), serializedPeerConnectionsFile )
253262 var toSave bytes.Buffer
254263 enc := gob .NewEncoder (& toSave )
255264 if err := enc .Encode (state ); err != nil {
@@ -273,11 +282,13 @@ func deserialize(state GlobalState) {
273282 }
274283
275284 s := webrtc.SettingEngine {}
285+ s .SetSRTPProtectionProfiles (dtls .SRTP_AEAD_AES_128_GCM )
276286 s .SetICECredentials (state .PeerConnectionState [i ].ICEUsernameFragment , state .PeerConnectionState [i ].ICEPassword )
277287 if err := s .SetEphemeralUDPPortRange (state .PeerConnectionState [i ].ICEPort , state .PeerConnectionState [i ].ICEPort ); err != nil {
278288 panic (err )
279289 }
280290 s .SetDTLSConnectionState (& state .PeerConnectionState [i ].DTLSConnectionState )
291+ s .SetSRTPState (state .PeerConnectionState [i ].SRTPState )
281292
282293 peerConnection , err := webrtc .NewAPI (webrtc .WithSettingEngine (s ), webrtc .WithMediaEngine (m )).NewPeerConnection (webrtc.Configuration {})
283294 if err != nil {
0 commit comments