diff --git a/server/handlers.go b/server/handlers.go index 4b4c746..84da811 100644 --- a/server/handlers.go +++ b/server/handlers.go @@ -809,6 +809,29 @@ func (c *RoomClient) handleSev(msg []string) error { return nil } +const ( + animStart = iota + animStop +) + +func (c *RoomClient) handleAnc(msg []string) error { + if len(msg) != 2 { + return errors.New("segment count mismatch") + } + + cmd, err := strconv.Atoi(msg[1]) + if err != nil { + return err + } + if cmd > animStop || cmd < animStart { + return errors.New("invalid command") + } + + c.broadcast(buildMsg("anc", cmd)) + + return nil +} + // SESSION func (c *SessionClient) handleI() error { diff --git a/server/room.go b/server/room.go index 677bccb..8f40bc5 100644 --- a/server/room.go +++ b/server/room.go @@ -295,6 +295,8 @@ func (c *RoomClient) processMsg(msgStr string) (err error) { err = c.handleSv(msgFields) case "sev": err = c.handleSev(msgFields) + case "anc": + err = c.handleAnc(msgFields) default: err = errors.New("unknown message type") }