1.8 KiB
1.8 KiB
Gateway Service
WebSocket API gateway for vehicle (TRex), HMI, and mobile app connections.
What it does
- Authenticates WebSocket connections via JWT
- Routes messages to Kafka topics
- Manages connection state in Redis
- Serves AsyncAPI docs
Ports
| Port | Purpose |
|---|---|
| 8077 | HTTP/WebSocket |
| 11011 | Health check |
WebSocket Endpoints
| Endpoint | Purpose | User-Agent |
|---|---|---|
/session |
Vehicle (TRex) and HMI connections | Fisker Ocean T.Rex x.x.x.x or HMI x.x.x.x |
/secret_mobile |
Mobile app connections | Mobile x.x.x or iOS x.x.x or Android x.x.x |
API Documentation
AsyncAPI specs available at /docs/:
/docs/asyncapi_mobile.yaml- Mobile API/docs/asyncapi_hmi.yaml- HMI API/docs/asyncapi_trex.yaml- T-Rex API/docs/index.html- Interactive UI
Testing WebSocket Connections
Install websocat:
brew install websocat
Test mobile endpoint:
# Connect to mobile websocket
websocat -H="User-Agent: Mobile 1.0.0" wss://gateway.mini.cloud.fiskerinc.com/secret_mobile
# Send verify message (after connecting)
{"handler":"verify","data":{"token":"<jwt_token>"}}
Test vehicle endpoint (requires VIN in SSL cert or header):
websocat -H="User-Agent: Fisker Ocean T.Rex 1.0.0.0 ABC123" \
-H="X-VIN: YH7DR1EA1PA000001" \
wss://gateway.mini.cloud.fiskerinc.com/session
Build
# From cloud-services root
docker build --platform linux/arm64 -t gateway:latest -f services/gateway/Dockerfile .
Configuration
See deploy/base/config.env for all environment variables.
Key settings:
KAFKA_HOSTS- Kafka bootstrap serversREDIS_HOST/PORT- Redis for session stateJWK_URL- JWKS endpoint for JWT validationDOCS- Path to docs directory (default:/docs)LOG_LEVEL- debug, info, warn, error