start-server.sh 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/bin/bash
  2. # Start the brainstorm server and output connection info
  3. # Usage: start-server.sh
  4. #
  5. # Starts server on a random high port, outputs JSON with URL
  6. # Each session gets its own temp directory to avoid conflicts
  7. # Server runs in background, PID saved for cleanup
  8. SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
  9. # Generate unique session directory
  10. SESSION_ID="$$-$(date +%s)"
  11. SCREEN_DIR="/tmp/brainstorm-${SESSION_ID}"
  12. SCREEN_FILE="${SCREEN_DIR}/screen.html"
  13. PID_FILE="${SCREEN_DIR}/.server.pid"
  14. LOG_FILE="${SCREEN_DIR}/.server.log"
  15. # Create fresh session directory
  16. mkdir -p "$SCREEN_DIR"
  17. # Kill any existing server
  18. if [[ -f "$PID_FILE" ]]; then
  19. old_pid=$(cat "$PID_FILE")
  20. kill "$old_pid" 2>/dev/null
  21. rm -f "$PID_FILE"
  22. fi
  23. # Start server, capturing output to log file
  24. cd "$SCRIPT_DIR"
  25. BRAINSTORM_SCREEN="$SCREEN_FILE" node index.js > "$LOG_FILE" 2>&1 &
  26. SERVER_PID=$!
  27. echo "$SERVER_PID" > "$PID_FILE"
  28. # Wait for server-started message (check log file)
  29. for i in {1..50}; do
  30. if grep -q "server-started" "$LOG_FILE" 2>/dev/null; then
  31. # Extract and output the server-started line
  32. grep "server-started" "$LOG_FILE" | head -1
  33. exit 0
  34. fi
  35. sleep 0.1
  36. done
  37. # Timeout - server didn't start
  38. echo '{"error": "Server failed to start within 5 seconds"}'
  39. exit 1