mirror of
https://github.com/m1k1o/neko.git
synced 2024-07-24 14:40:50 +12:00
send unicast & broadcast.
This commit is contained in:
parent
c27658d54c
commit
8e13a60677
@ -52,6 +52,11 @@ const (
|
||||
BORADCAST_STATUS = "broadcast/status"
|
||||
)
|
||||
|
||||
const (
|
||||
SEND_UNICAST = "send/unicast"
|
||||
SEND_BROADCAST = "send/broadcast"
|
||||
)
|
||||
|
||||
const (
|
||||
FILE_CHOOSER_DIALOG_OPENED = "file_chooser_dialog/opened"
|
||||
FILE_CHOOSER_DIALOG_CLOSED = "file_chooser_dialog/closed"
|
||||
|
@ -167,3 +167,22 @@ type BroadcastStatus struct {
|
||||
IsActive bool `json:"is_active"`
|
||||
URL string `json:"url,omitempty"`
|
||||
}
|
||||
|
||||
/////////////////////////////
|
||||
// Send (opaque comunication channel)
|
||||
/////////////////////////////
|
||||
|
||||
type SendUnicast struct {
|
||||
Event string `json:"event,omitempty"`
|
||||
Sender string `json:"sender"`
|
||||
Receiver string `json:"receiver"`
|
||||
Subject string `json:"subject"`
|
||||
Body string `json:"body"`
|
||||
}
|
||||
|
||||
type SendBroadcast struct {
|
||||
Event string `json:"event,omitempty"`
|
||||
Sender string `json:"sender"`
|
||||
Subject string `json:"subject"`
|
||||
Body string `json:"body"`
|
||||
}
|
||||
|
@ -86,6 +86,18 @@ func (h *MessageHandlerCtx) Message(session types.Session, raw []byte) bool {
|
||||
err = utils.Unmarshal(payload, raw, func() error {
|
||||
return h.keyboardModifiers(session, payload)
|
||||
})
|
||||
|
||||
// Send Events
|
||||
case event.SEND_UNICAST:
|
||||
payload := &message.SendUnicast{}
|
||||
err = utils.Unmarshal(payload, raw, func() error {
|
||||
return h.sendUnicast(session, payload)
|
||||
})
|
||||
case event.SEND_BROADCAST:
|
||||
payload := &message.SendBroadcast{}
|
||||
err = utils.Unmarshal(payload, raw, func() error {
|
||||
return h.sendBroadcast(session, payload)
|
||||
})
|
||||
default:
|
||||
return false
|
||||
}
|
||||
|
33
internal/websocket/handler/send.go
Normal file
33
internal/websocket/handler/send.go
Normal file
@ -0,0 +1,33 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"demodesk/neko/internal/types"
|
||||
"demodesk/neko/internal/types/message"
|
||||
"demodesk/neko/internal/types/event"
|
||||
)
|
||||
|
||||
func (h *MessageHandlerCtx) sendUnicast(session types.Session, payload *message.SendUnicast) error {
|
||||
receiver, ok := h.sessions.Get(payload.Receiver)
|
||||
if !ok {
|
||||
h.logger.Debug().Str("id", session.ID()).Msg("receiver ID not found")
|
||||
return nil
|
||||
}
|
||||
|
||||
return receiver.Send(message.SendUnicast{
|
||||
Event: event.SEND_UNICAST,
|
||||
Sender: session.ID(),
|
||||
Receiver: receiver.ID(),
|
||||
Subject: payload.Subject,
|
||||
Body: payload.Body,
|
||||
})
|
||||
}
|
||||
|
||||
func (h *MessageHandlerCtx) sendBroadcast(session types.Session, payload *message.SendBroadcast) error {
|
||||
h.sessions.Broadcast(message.SendBroadcast{
|
||||
Event: event.SEND_BROADCAST,
|
||||
Sender: session.ID(),
|
||||
Subject: payload.Subject,
|
||||
Body: payload.Body,
|
||||
}, []string{ session.ID() })
|
||||
return nil
|
||||
}
|
Loading…
Reference in New Issue
Block a user