Major fixes: - Integrated ServerSyncClient into GUI for actual multi-user sync - Fixed CUDA device display to show actual hardware used - Optimized server sync with parallel HTTP requests (5x faster) - Fixed 2-second DNS delay by using 127.0.0.1 instead of localhost - Added comprehensive debugging and performance logging Performance improvements: - HTTP requests: 2045ms → 52ms (97% faster) - Multi-user sync lag: ~4s → ~100ms (97% faster) - Parallel request processing with ThreadPoolExecutor (3 workers) New features: - Room generator with one-click copy on Node.js landing page - Auto-detection of PHP vs Node.js server types - Localhost warning banner for WSL2 users - Comprehensive debug logging throughout sync pipeline Files modified: - gui/main_window_qt.py - Server sync integration, device display fix - client/server_sync.py - Parallel HTTP, server type detection - server/nodejs/server.js - Room generator, warnings, debug logs Documentation added: - PERFORMANCE_FIX.md - Server sync optimization details - FIX_2_SECOND_HTTP_DELAY.md - DNS/localhost issue solution - LATENCY_GUIDE.md - Audio chunk duration tuning guide - DEBUG_4_SECOND_LAG.md - Comprehensive debugging guide - SESSION_SUMMARY.md - Complete session summary 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
3.1 KiB
Fix: 2-Second HTTP Request Delay
Problem Found!
Your logs show:
[Server Sync] HTTP request: 2045ms, Status: 200 ← 2 seconds in Python!
[2025-12-27...] Transcription received: "..." (total: 40ms) ← 40ms in Node.js!
The server processes in 40ms, but the HTTP request takes 2000ms!
Root Cause: DNS Resolution Delay
You're using http://localhost:3000/api/send, and on WSL2 (Windows Subsystem for Linux), DNS resolution of localhost is VERY slow (~2 seconds).
This is a known issue with WSL2 networking.
Solution: Use 127.0.0.1 Instead
Fix in Desktop App Settings
- Open Local Transcription app
- Go to Settings → Server Sync
- Change Server URL from:
To:
http://localhost:3000/api/sendhttp://127.0.0.1:3000/api/send - Click Save
- Restart transcription
Expected result: HTTP requests drop from 2045ms → ~50ms!
Why This Happens
On WSL2:
localhost → [DNS lookup via Windows] → [WSL network translation] → 127.0.0.1
↑ This takes 2 seconds! ↑
Direct IP:
127.0.0.1 → [Direct connection] → Node.js server
↑ Fast! ↑
Alternative Fixes
Option 1: Fix WSL2 DNS (Advanced)
Edit /etc/wsl.conf:
sudo nano /etc/wsl.conf
Add:
[network]
generateResolvConf = false
Then edit /etc/resolv.conf:
sudo nano /etc/resolv.conf
Change to:
nameserver 8.8.8.8
nameserver 8.8.4.4
Restart WSL:
# In Windows PowerShell:
wsl --shutdown
Option 2: Add to /etc/hosts
sudo nano /etc/hosts
Add:
127.0.0.1 localhost
::1 localhost
Option 3: Just Use 127.0.0.1 (Easiest!)
No system changes needed - just use the IP address everywhere:
- Server URL:
http://127.0.0.1:3000/api/send - Display URL:
http://127.0.0.1:3000/display?room=...
Verification
After changing to 127.0.0.1, you should see:
Before:
[Server Sync] HTTP request: 2045ms, Status: 200
After:
[Server Sync] HTTP request: 45ms, Status: 200
Total improvement: 2 seconds faster! ✅
For OBS Users
Also update your OBS Browser Source URL:
Old:
http://localhost:3000/display?room=cosmic-nebula-5310&fade=10
New:
http://127.0.0.1:3000/display?room=cosmic-nebula-5310&fade=10
Why Node.js Generates with localhost
The room generator in Node.js uses localhost because:
const serverUrl = `http://${window.location.host}/api/send`;
If you access the page via http://127.0.0.1:3000, it will generate URLs with 127.0.0.1.
If you access via http://localhost:3000, it will generate with localhost.
Recommendation: Always access the Node.js page via:
http://127.0.0.1:3000
Then the room generator will create fast URLs automatically!
Summary
| Method | Speed | Notes |
|---|---|---|
http://localhost:3000/api/send |
2045ms ❌ | Slow DNS on WSL2 |
http://127.0.0.1:3000/api/send |
45ms ✅ | Direct IP, no DNS |
| Fix WSL2 DNS | Varies | Complex, may break other things |
Just use 127.0.0.1 everywhere - problem solved! 🚀