汝等是人是狼?
Werewolf Cloudflare Port
WebSocket 入口
 連線:GET /ws/room/:roomId
 格式:每個 frame 都是 JSON object,必須包含 type
 加入:第一個訊息必須是 join,未加入前其他訊息會收到 error
 權威來源:房間 Durable Object 驗證權限並過濾每個 socket 可收到的私有頻道訊息。
Client Messages
 join:{ type, playerId, nickname, trip, wishRole }
 chat:公開發言。遊戲中限生存玩家與 GM 使用。
 wolf_chat / fox_chat / common_chat / lovers_chat:夜晚私有頻道,限對應陣營或關係的生存玩家。
 dead_chat:遊戲進行中死亡玩家的靈界頻道。
 vote:白天投票,payload 含 targetPlayerId
 night_kill / divine / child_fox_divine / guard / cat_revive:夜晚或角色能力行動,payload 含 targetPlayerId
 set_last_words:遺言啟用時可儲存死亡時公開文字。
 start_game / kick_player:房主或 GM 的大廳控制。
 gm_*:GM 聊天、私語、換日、裁定、調整生死、角色與旗標。
Server Messages
 joined / presence:連線確認與目前成員清單。
 game_state:公開階段、日期、玩家生死、投票可見狀態、勝者、計時與系統 log。
 role:私密角色訊息,包含可見同伴與權力者資訊。
 chat family:公開、狼、狐、共有、戀人、靈界、GM 與 GM 私語訊息。
 common voice:commonTalkVisible 啟用時,非共有者會收到匿名 common_chatplayerIdcommon_voice
 action_ack:確認投票、襲擊、護衛、子狐占卜、貓又復活或踢人。
 divination_result / child_fox_result / medium_result:私密角色結果。
 revealed_roles:幽靈視角啟用時給死亡玩家;遊戲結束後給所有人。
 last_words_ack / error:遺言確認與驗證、權限、階段或規則錯誤。
參考
 型別來源:src/types.ts
 驗證來源:src/validation.ts
 執行來源:src/room.ts
 JSON:/api/protocol
 文件:README.md#websocket-protocol