dumont-talker / scripts /start_webrtc.sh
marcosremar2's picture
feat: Add complete microservices architecture for speech-to-speech avatar system
e7d37f3
Raw
History Blame
6.12 kB
#!/bin/bash
#
# WebRTC Latency Test POC - Start Script
# Starts the WebRTC server for latency testing
#
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
RED='\033[0;31m'
NC='\033[0m'
success() { echo -e "${GREEN}βœ“${NC} $1"; }
warn() { echo -e "${YELLOW}⚠${NC} $1"; }
error() { echo -e "${RED}βœ—${NC} $1"; }
header() { echo -e "\n${CYAN}$1${NC}"; }
# Default configuration
HOST="0.0.0.0"
PORT=9000
LOG_FILE="/tmp/webrtc-server.log"
PID_FILE="/tmp/webrtc-server.pid"
SERVER_SCRIPT="$PROJECT_DIR/webrtc-server-fixed.py"
# Parse arguments
while [[ $# -gt 0 ]]; do
case $1 in
-p|--port)
PORT="$2"
shift 2
;;
-h|--host)
HOST="$2"
shift 2
;;
--no-daemon)
NO_DAEMON=true
shift
;;
*)
echo "Unknown option: $1"
echo "Usage: $0 [--port PORT] [--host HOST] [--no-daemon]"
exit 1
;;
esac
done
echo ""
echo "╔══════════════════════════════════════════════════════════════╗"
echo "β•‘ WEBRTC LATENCY TEST - START SERVER β•‘"
echo "β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•"
echo ""
# ============================================================
# CHECK IF SERVER SCRIPT EXISTS
# ============================================================
if [ ! -f "$SERVER_SCRIPT" ]; then
error "Server script not found: $SERVER_SCRIPT"
echo " Please install the project first:"
echo " $SCRIPT_DIR/install_webrtc.sh"
exit 1
fi
# ============================================================
# CHECK IF ALREADY RUNNING
# ============================================================
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if ps -p "$PID" > /dev/null 2>&1; then
header "Server already running"
echo " PID: $PID"
echo " Port: $PORT"
echo ""
echo " To stop: $SCRIPT_DIR/stop_webrtc.sh"
exit 0
else
# Stale PID file, remove it
rm -f "$PID_FILE"
fi
fi
# ============================================================
# STOP EXISTING PROCESSES
# ============================================================
header "Stopping existing WebRTC server processes..."
# Kill any existing webrtc-server processes
pkill -f "webrtc-server" 2>/dev/null || true
sleep 1
# Kill any process using the port
if lsof -Pi :$PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
lsof -ti :$PORT | xargs kill -9 2>/dev/null || true
fi
success "Cleanup completed"
# ============================================================
# START SERVER
# ============================================================
header "Starting WebRTC server..."
cd "$PROJECT_DIR"
if [ "$NO_DAEMON" = "true" ]; then
# Run in foreground
echo " Starting in foreground mode..."
echo " Host: $HOST"
echo " Port: $PORT"
echo " Log: $LOG_FILE"
echo ""
python3 -u "$SERVER_SCRIPT" > "$LOG_FILE" 2>&1
else
# Run in background
echo " Host: $HOST"
echo " Port: $PORT"
echo " Log: $LOG_FILE"
echo ""
# Start in background with nohup
nohup python3 -u "$SERVER_SCRIPT" > "$LOG_FILE" 2>&1 &
SERVER_PID=$!
# Save PID
echo $SERVER_PID > "$PID_FILE"
# Wait a moment for startup
sleep 3
# Check if process is still running
if ps -p $SERVER_PID > /dev/null 2>&1; then
success "Server started successfully"
echo " PID: $SERVER_PID"
# Wait for port to be listening
for i in {1..10}; do
if lsof -Pi :$PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
success "Server listening on port $PORT"
break
fi
sleep 1
done
else
error "Server failed to start"
echo " Check log: $LOG_FILE"
rm -f "$PID_FILE"
exit 1
fi
fi
# ============================================================
# DISPLAY STATUS
# ============================================================
header "SERVER STATUS"
echo ""
printf " %-15s %-10s %s\n" "Service" "Port" "Status"
echo " ─────────────────────────────────"
if lsof -Pi :$PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
printf " %-15s %-10s ${GREEN}βœ“ Online${NC}\n" "WebRTC Server" "$PORT"
# Show last few log lines
if [ -f "$LOG_FILE" ]; then
echo ""
echo " Last log entries:"
tail -5 "$LOG_FILE" | sed 's/^/ /'
fi
else
printf " %-15s %-10s ${RED}βœ— Offline${NC}\n" "WebRTC Server" "$PORT"
echo ""
error "Server is not responding"
exit 1
fi
# ============================================================
# ACCESS INFORMATION
# ============================================================
header "ACCESS INFORMATION"
echo ""
if [ "$HOST" = "0.0.0.0" ]; then
echo " Local access: http://localhost:$PORT"
echo " Network access: http://$(hostname -I | awk '{print $1}'):$PORT"
else
echo " Server URL: http://$HOST:$PORT"
fi
echo ""
echo " Web client: Open http://localhost:$PORT in browser"
echo " Logs: tail -f $LOG_FILE"
echo ""
# ============================================================
# QUICK TEST COMMANDS
# ============================================================
echo " Quick test commands:"
echo " β€’ Manual test: Open http://localhost:$PORT in browser"
echo " β€’ Auto test: python3 test_latency_playwright.py 1 true"
echo " β€’ Load test: python3 test_latency_playwright.py 5 true"
echo ""
echo " To stop server: $SCRIPT_DIR/stop_webrtc.sh"
echo ""
success "WebRTC server started successfully!"
echo ""