Files
echoes-of-the-ash/old/WEBSOCKET_TESTING.md
2025-11-27 16:27:01 +01:00

123 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# WebSocket Testing Guide
## Quick Test - Browser Console
Open the game in your browser and press F12 to open the console. Look for these messages:
### Expected Console Messages
```
🔌 Connecting to WebSocket: wss://echoesoftheashgame.patacuack.net/ws/game/...
✅ WebSocket connected
📨 WebSocket message: connected
```
### Test WebSocket Messages
1. **Test Movement:**
- Move your character to a new location
- You should see instant state updates (no 5-second delay)
- Check console for: `📨 WebSocket message: state_update`
2. **Test Combat:**
- Enter combat with an NPC
- Attack and observe instant feedback
- Check console for: `📨 WebSocket message: combat_update`
3. **Test Multi-User (Optional):**
- Open game in two different browsers/accounts
- Move one character
- Other browser should see "Player arrived" notification
## Verify WebSocket Connection
Run this in your browser console while in the game:
```javascript
// Check if WebSocket is connected
console.log('WebSocket Status:', window.performance.getEntriesByType('resource').filter(r => r.name.includes('/ws/game/')))
```
## Check Server-Side
Check API logs for WebSocket connections:
```bash
cd /opt/dockers/echoes_of_the_ashes
docker compose logs echoes_of_the_ashes_api | grep "WebSocket"
```
You should see:
```
🔌 WebSocket connected: username (player_id=123)
```
## Performance Comparison
### Before WebSocket
- Open browser DevTools Network tab
- Filter for "game" API calls
- Count requests per minute: Should be ~60 requests (5 endpoints × 12 times/min)
### After WebSocket
- Same network tab
- Should see 1 WebSocket connection (ws:// or wss://)
- Regular polling should drop to ~2-6 requests/min (backup polling every 30s)
## Troubleshooting
### WebSocket Not Connecting
1. **Check Token:**
```javascript
console.log('Token:', localStorage.getItem('token'))
```
Should show a JWT token string.
2. **Check CORS/Network:**
- Look for errors in console
- Check if using HTTPS (wss://) on production
- Check if firewall blocking WebSocket
3. **Check API Container:**
```bash
docker compose logs echoes_of_the_ashes_api | tail -50
```
### Frequent Disconnections
1. Check heartbeat is working (every 30s)
2. Look for network issues
3. Check nginx timeout settings (if using reverse proxy)
### Messages Not Updating
1. Verify WebSocket shows "connected" in console
2. Check if fallback polling is taking over
3. Look for errors in API logs
## Success Indicators
✅ WebSocket connection established within 2 seconds
✅ Movement updates are instant (<100ms)
✅ Combat actions show immediate feedback
✅ Network tab shows reduced API calls (87% reduction)
✅ No WebSocket errors in console
✅ Auto-reconnect works after network interruption
## Next Steps
Once WebSocket is confirmed working:
1. **Monitor for 24 hours** - Check stability
2. **Gather user feedback** - Are updates faster?
3. **Check server metrics** - CPU/memory usage should be lower
4. **Plan new features** - Live chat, parties, real-time map
## Known Limitations
- WebSocket requires modern browsers (all current browsers support it)
- Fallback polling ensures old browsers still work
- First connection may take 1-2 seconds (JWT validation)
Good luck! 🎮