| #!/bin/bash |
| |
| |
| |
| |
|
|
| 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}"; } |
|
|
| |
| 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" |
|
|
| |
| 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 "" |
|
|
| |
| |
| |
| 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 |
|
|
| |
| |
| |
| 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 |
| |
| rm -f "$PID_FILE" |
| fi |
| fi |
|
|
| |
| |
| |
| header "Stopping existing WebRTC server processes..." |
|
|
| |
| pkill -f "webrtc-server" 2>/dev/null || true |
| sleep 1 |
|
|
| |
| 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" |
|
|
| |
| |
| |
| header "Starting WebRTC server..." |
|
|
| cd "$PROJECT_DIR" |
|
|
| if [ "$NO_DAEMON" = "true" ]; then |
| |
| 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 |
| |
| echo " Host: $HOST" |
| echo " Port: $PORT" |
| echo " Log: $LOG_FILE" |
| echo "" |
| |
| |
| nohup python3 -u "$SERVER_SCRIPT" > "$LOG_FILE" 2>&1 & |
| SERVER_PID=$! |
| |
| |
| echo $SERVER_PID > "$PID_FILE" |
| |
| |
| sleep 3 |
| |
| |
| if ps -p $SERVER_PID > /dev/null 2>&1; then |
| success "Server started successfully" |
| echo " PID: $SERVER_PID" |
| |
| |
| 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 |
|
|
| |
| |
| |
| 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" |
| |
| |
| 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 |
|
|
| |
| |
| |
| 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 "" |
|
|
| |
| |
| |
| 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 "" |
|
|