SITCON 2026 閃電講互動系統——與會者用手機投球,球會即時出現在展示螢幕的物理模擬畫面中。
- 使用者:用手機輸入 Email,以 Gravatar 頭像作為球,往上滑動或點擊即可投球
- 投影畫面:大螢幕顯示即時 Matter.js 物理模擬,球會在場地內彈跳
- 歡迎頁:顯示目前在線人數和加入 QR Code
- 管理員頁面:控制開放投球、倒數計時、物理參數、重置場地等
pnpm i複製範例檔案並修改:
cp .env.example .env編輯 .env:
PORT=3000
ADMIN_PASSWORD=your_secure_password # 務必修改,預設值不安全
ALLOWED_ORIGIN=* # 正式環境建議設為你的網域注意:若未設定
ADMIN_PASSWORD,啟動時會出現警告,且預設密碼為admin123,請勿在正式環境使用。
pnpm dev
# 或
pnpm start伺服器預設監聽 http://localhost:3000。
| 路徑 | 用途 |
|---|---|
/ |
觀眾端 — 與會者用手機開啟,輸入 Email 後即可投球 |
/display.html |
展示端 — 接在大螢幕上,顯示物理模擬畫面 |
/welcome.html |
迎賓端 — 顯示目前在線人數 |
/admin.html |
管理端 — 主持人控制台,需輸入密碼登入 |
- 在展示電腦上開啟
/display.html,投影或是輸入到 OBS。- 輸入到 OBS 可以直接使用網址:
/display.html?hide=true&mode=1。OBS 不需要設定任何額外 CSS 參數,請直接清空。(其實不清理論上也沒差)
- 輸入到 OBS 可以直接使用網址:
- 在主持人手機或筆電開啟
/admin.html,以管理員密碼登入 - 可選:在簽到處或大螢幕角落開啟
/welcome.html顯示人數
- 與會者用手機掃描 QR code 進入
/,輸入 Email 並確認頭像 - 主持人在 Admin 面板點擊「立即開放投球」,開始接受投球
- 與會者往上滑動(或點擊)球,球會飛到展示端畫面
- 開場前可設定倒數計時器,倒數結束後自動開放投球
- 倒數結束後可依設定延遲觸發自動填充,讓整個畫面填滿球
- 在 Admin 面板點擊「清空球」,地板會消失,所有球落下後場地重置
| 功能 | 說明 |
|---|---|
| 地球引力強度 (0–5) | 調整物理引力,預設 1.0 |
| 彈力係數 (0–1) | 調整球的彈跳程度,預設 0.8 |
| 倒數計時器 | 設定秒數後點擊「開始倒數」,倒數結束自動開放投球 |
| 立即開放投球 | 切換開放 / 停止投球狀態 |
| 清空球 | 移除所有球並重置場地 |
| 倒數結束後自動填充 | 設定倒數結束後幾秒自動填滿畫面(0 = 立即) |
| 強制立即填滿 | 不等倒數,立即填滿畫面 |
為防止濫用,伺服器端有以下限制:
- 投球:每個 socket 每秒最多 1 顆
- 加入:每個 socket 每 10 秒最多 3 次
- 管理員登入:每個 IP 失敗 10 次後鎖定 15 分鐘
- 後端:Node.js + Fastify + Socket.IO
- 前端:Vanilla JS + Matter.js(物理引擎)
- 即時通訊:WebSocket(Socket.IO)
- 頭像:Gravatar(以 Email MD5 hash 取得)
pnpm dev # 啟動伺服器
pnpm format # 格式化程式碼(Prettier)Apache-2.0