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"
|
BORADCAST_STATUS = "broadcast/status"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
SEND_UNICAST = "send/unicast"
|
||||||
|
SEND_BROADCAST = "send/broadcast"
|
||||||
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
FILE_CHOOSER_DIALOG_OPENED = "file_chooser_dialog/opened"
|
FILE_CHOOSER_DIALOG_OPENED = "file_chooser_dialog/opened"
|
||||||
FILE_CHOOSER_DIALOG_CLOSED = "file_chooser_dialog/closed"
|
FILE_CHOOSER_DIALOG_CLOSED = "file_chooser_dialog/closed"
|
||||||
|
@ -167,3 +167,22 @@ type BroadcastStatus struct {
|
|||||||
IsActive bool `json:"is_active"`
|
IsActive bool `json:"is_active"`
|
||||||
URL string `json:"url,omitempty"`
|
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 {
|
err = utils.Unmarshal(payload, raw, func() error {
|
||||||
return h.keyboardModifiers(session, payload)
|
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:
|
default:
|
||||||
return false
|
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