Rally — 遊戲公會聊天平台 Rally — Chat Platform for Gaming Guilds
給遊戲公會與電競戰隊的聊天平台,接手 Guilded 關閉後留下的空缺。Zulip 式「頻道/主題」雙層結構、即時訊息廣播、斷線自動重連補送事件,以及 WebRTC 語音頻道。後端刻意不綁框架,用 Node 原生 http 與 ws 自行實作 Gateway。 A chat platform for gaming guilds and esports teams, filling the gap left by Guilded's shutdown. Features Zulip-style two-tier channels/topics, realtime message broadcast, auto-reconnect with event replay, and WebRTC voice channels. The backend deliberately avoids frameworks — a custom gateway built on Node's native http and ws.
- TypeScript
- React 18
- Vite
- Zustand
- Node.js
- WebSocket
- WebRTC
關於這個專案
Rally 是一個從零打造的即時聊天平台,目標使用者是遊戲公會與電競戰隊。目前完成 Phase 0(技術驗證),MVP 尚未開工。
已驗證可用
- 雙層資訊結構 — 參考 Zulip 的「頻道/主題」,讓公會的多線討論不會互相洗版。
- 即時訊息 — WebSocket 廣播、樂觀更新、輸入中提示。
- 可靠連線 — 斷線自動退避重連,並以
RESUME補送斷線期間漏掉的事件(有測試覆蓋)。 - 權限位元系統 — 前後端共用同一份權限判定實作。
技術取捨
後端刻意不使用 Express 等框架,直接以 Node 原生 http 與 ws 自行實作 Hub(路由與廣播)與 Session(sequence 與重播緩衝),目的是徹底掌握連線生命週期。前後端型別共用放在 packages/shared,避免協定不同步。
語音目前是 WebRTC P2P mesh,上行頻寬為 O(n−1) 且沒有 TURN,屬技術驗證性質;正式版需改用 SFU。
註:此儲存庫目前為私人,原始碼連結需設為 Public 後訪客才能開啟。