멤버 도큐먼트를 직접 메시지 보내는 방식으로 변경

This commit is contained in:
2023-07-14 15:09:20 +09:00
parent 30005ea0e3
commit 454aae5294

View File

@ -267,26 +267,31 @@ func (tv *Tavern) RegisterHandlers(ctx context.Context, serveMux *http.ServeMux,
return nil return nil
} }
type tavernCommandMessage struct {
Cmd string
Args []string
}
func (sub *subTavern) clientMessageReceived(sender *wshandler.Sender, messageType wshandler.WebSocketMessageType, body io.Reader) { func (sub *subTavern) clientMessageReceived(sender *wshandler.Sender, messageType wshandler.WebSocketMessageType, body io.Reader) {
if messageType == wshandler.Connected { if messageType == wshandler.Connected {
sub.cm.add(sender.Accid, sender.Alias) sub.cm.add(sender.Accid, sender.Alias)
} else if messageType == wshandler.Disconnected { } else if messageType == wshandler.Disconnected {
sub.cm.remove(sender.Accid) sub.cm.remove(sender.Accid)
} else if messageType == wshandler.BinaryMessage { } else if messageType == wshandler.BinaryMessage {
var msg tavernCommandMessage var msg map[string][]any
dec := json.NewDecoder(body) dec := json.NewDecoder(body)
if err := dec.Decode(&msg); err == nil { if err := dec.Decode(&msg); err == nil {
switch msg.Cmd { for cmd, args := range msg {
switch cmd {
case "EnterChannel": case "EnterChannel":
sub.wsh.EnterRoom(sub.region, msg.Args[0], sender.Accid) sub.wsh.EnterRoom(sub.region, args[0].(string), sender.Accid)
case "LeaveChannel": case "LeaveChannel":
sub.wsh.LeaveRoom(sub.region, msg.Args[0], sender.Accid) sub.wsh.LeaveRoom(sub.region, args[0].(string), sender.Accid)
case "UpdateGroupMemberDocument":
typename := args[0].(string)
gidobj, _ := primitive.ObjectIDFromHex(args[1].(string))
doc := args[2].(map[string]any)
if group := sub.groups[typename]; group != nil {
group.UpdateMemberDocument(gidobj, sender.Accid, doc)
}
}
} }
} }
} }