Archived
2
0

server -> client signaling

This commit is contained in:
Craig
2020-02-12 23:13:33 +00:00
parent 1f8b4d44c7
commit d5bff32302
17 changed files with 181 additions and 286 deletions

View File

@ -57,18 +57,11 @@ func (h *MessageHandler) Message(id string, raw []byte) error {
switch header.Event {
// Signal Events
case event.SIGNAL_PROVIDE:
payload := &message.Signal{}
case event.SIGNAL_ANSWER:
payload := &message.SignalAnswer{}
return errors.Wrapf(
utils.Unmarshal(payload, raw, func() error {
return h.createPeer(id, session, payload)
}), "%s failed", header.Event)
// Identity Events
case event.IDENTITY_DETAILS:
payload := &message.IdentityDetails{}
return errors.Wrapf(
utils.Unmarshal(payload, raw, func() error {
return h.identityDetails(id, session, payload)
return h.signalAnswer(id, session, payload)
}), "%s failed", header.Event)
// Control Events

View File

@ -1,34 +0,0 @@
package websocket
import (
"n.eko.moe/neko/internal/types"
"n.eko.moe/neko/internal/types/event"
"n.eko.moe/neko/internal/types/message"
)
func (h *MessageHandler) identityDetails(id string, session types.Session, payload *message.IdentityDetails) error {
if err := session.SetName(payload.Username); err != nil {
return err
}
return nil
}
func (h *MessageHandler) createPeer(id string, session types.Session, payload *message.Signal) error {
sdp, peer, err := h.webrtc.CreatePeer(id, payload.SDP)
if err != nil {
return err
}
if err := session.SetPeer(peer); err != nil {
return err
}
if err := session.Send(message.Signal{
Event: event.SIGNAL_ANSWER,
SDP: sdp,
}); err != nil {
return err
}
return nil
}

View File

@ -7,10 +7,8 @@ import (
)
func (h *MessageHandler) SessionCreated(id string, session types.Session) error {
if err := session.Send(message.Identity{
Event: event.IDENTITY_PROVIDE,
ID: id,
}); err != nil {
// send sdp and id over to client
if err := h.signalProvide(id, session); err != nil {
return err
}
@ -20,7 +18,7 @@ func (h *MessageHandler) SessionCreated(id string, session types.Session) error
}
if session.Admin() {
// send screen configurations
// send screen configurations if admin
if err := h.screenConfigurations(id, session); err != nil {
return err
}

View File

@ -0,0 +1,36 @@
package websocket
import (
"n.eko.moe/neko/internal/types"
"n.eko.moe/neko/internal/types/event"
"n.eko.moe/neko/internal/types/message"
)
func (h *MessageHandler) signalProvide(id string, session types.Session) error {
sdp, err := h.webrtc.CreatePeer(id, session)
if err != nil {
return err
}
if err := session.Send(message.SignalProvide{
Event: event.SIGNAL_PROVIDE,
ID: id,
SDP: sdp,
}); err != nil {
return err
}
return nil
}
func (h *MessageHandler) signalAnswer(id string, session types.Session, payload *message.SignalAnswer) error {
if err := session.SetName(payload.Username); err != nil {
return err
}
if err := session.SignalAnwser(payload.SDP); err != nil {
return err
}
return nil
}