Mô phỏng spawn cá (HTML) — 2 client cùng phòng

Mỗi cột là một socket độc lập (hai JWT / hai user). Cùng roomId để so sánh: hai bức tranh nên khớp số cá và vị trí (mô phỏng bơi client-side từ spawnedAt + entryEdge + lane). Cá = hình tròn, màu theo fishTypeId. Trước đó: REST join phòng cho từng user. ← Trang socket test

Client A

Chưa kết nối

Chấm nhỏ: player_fired (màu theo userId). Vòng vàng: fish_killed.

Client B

Chưa kết nối

Cùng logic canvas A — dùng để kiểm tra đồng bộ multiplayer.