WELIFE Docs Swagger Admin Web

Local WebSocket + WebRTC (signaling) — 2026-08-11

Domain: D-CHAT · D-RIDES WP: WP-CHAT-WS-01 (env bootstrap)

Đã chạy / PASS

Check Result
Infra Postgres/Redis/MinIO UP
API :3000 health OK
GET /chat probe socket.io · ns /chat
GET /socket.io/?EIO=4&transport=polling HTTP 200
socket.io-client (mobile) installed
STUN mặc định stun:stun.l.google.com:19302

Env mobile (local LAN)

mobile/.env.local trỏ realtime về máy API:

EXPO_PUBLIC_API_URL=http://192.168.1.109:3000/api/v1
EXPO_PUBLIC_WS_URL=http://192.168.1.109:3000
# optional TURN/STUN JSON:
# EXPO_PUBLIC_ICE_SERVERS=[{"urls":"stun:stun.l.google.com:19302"}]

Cloud backup giữ trong comment *_CLOUD_BACKUP trong .env.local.

Kiến trúc

App  --Socket.IO-->  API /socket.io
       namespace /chat   · tin nhắn + call:signal (WebRTC SDP/ICE)
       namespace /rides  · GPS tài xế

WebRTC media: peer-to-peer (STUN/TURN)
Signaling: qua Socket.IO (không đi media qua Nest)

Expo Go vs media đầy đủ

Mode Signaling WS Audio/Video PeerConnection
Expo Go ✅ ❌ (thiếu RTCPeerConnection native)
EAS Dev Client + react-native-webrtc ✅ ✅

CallScreen đã sẵn sàng signaling; media cần Dev Client (không cài native vào Expo Go trong bước này).

Lệnh vận hành

npm run infra:up
npm run api:dev
cd mobile && npm run start:clear   # reload env

Namespaces: chat io(WS_URL + '/chat') · rides io(WS_URL + '/rides') · path /socket.io.