멤버 도큐먼트를 직접 메시지 보내는 방식으로 변경
This commit is contained in:
@ -267,26 +267,31 @@ func (tv *Tavern) RegisterHandlers(ctx context.Context, serveMux *http.ServeMux,
|
||||
return nil
|
||||
}
|
||||
|
||||
type tavernCommandMessage struct {
|
||||
Cmd string
|
||||
Args []string
|
||||
}
|
||||
|
||||
func (sub *subTavern) clientMessageReceived(sender *wshandler.Sender, messageType wshandler.WebSocketMessageType, body io.Reader) {
|
||||
if messageType == wshandler.Connected {
|
||||
sub.cm.add(sender.Accid, sender.Alias)
|
||||
} else if messageType == wshandler.Disconnected {
|
||||
sub.cm.remove(sender.Accid)
|
||||
} else if messageType == wshandler.BinaryMessage {
|
||||
var msg tavernCommandMessage
|
||||
var msg map[string][]any
|
||||
dec := json.NewDecoder(body)
|
||||
if err := dec.Decode(&msg); err == nil {
|
||||
switch msg.Cmd {
|
||||
case "EnterChannel":
|
||||
sub.wsh.EnterRoom(sub.region, msg.Args[0], sender.Accid)
|
||||
for cmd, args := range msg {
|
||||
switch cmd {
|
||||
case "EnterChannel":
|
||||
sub.wsh.EnterRoom(sub.region, args[0].(string), sender.Accid)
|
||||
|
||||
case "LeaveChannel":
|
||||
sub.wsh.LeaveRoom(sub.region, msg.Args[0], sender.Accid)
|
||||
case "LeaveChannel":
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user