add ice restarts.

This commit is contained in:
Miroslav Šedivý 2021-06-27 22:02:05 +02:00
parent d575d88daf
commit 09fdea1b11
6 changed files with 75 additions and 41 deletions

View file

@ -52,6 +52,8 @@ func (h *MessageHandlerCtx) Message(session types.Session, raw []byte) bool {
err = utils.Unmarshal(payload, raw, func() error {
return h.signalRequest(session, payload)
})
case event.SIGNAL_RESTART:
err = h.signalRestart(session)
case event.SIGNAL_ANSWER:
payload := &message.SignalAnswer{}
err = utils.Unmarshal(payload, raw, func() error {

View file

@ -32,6 +32,25 @@ func (h *MessageHandlerCtx) signalRequest(session types.Session, payload *messag
})
}
func (h *MessageHandlerCtx) signalRestart(session types.Session) error {
peer := session.GetWebRTCPeer()
if peer == nil {
h.logger.Debug().Str("session_id", session.ID()).Msg("webRTC peer does not exist")
return nil
}
offer, err := peer.CreateOffer(true, true)
if err != nil {
return err
}
return session.Send(
message.SignalAnswer{
Event: event.SIGNAL_RESTART,
SDP: offer.SDP,
})
}
func (h *MessageHandlerCtx) signalAnswer(session types.Session, payload *message.SignalAnswer) error {
peer := session.GetWebRTCPeer()
if peer == nil {