SSE Server (EventSource)
Simple Server-Sent Events development server.
Overview
Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine that enables server-side JavaScript execution. Originally created by Ryan Dahl in 2009, Node.js revolutionized web development by allowing developers to use JavaScript for both client and server-side code. Its event-driven, non-blocking I/O model makes it particularly well-suited for real-time applications and data-intensive tasks that require high concurrency.
This Docker configuration creates a lightweight Server-Sent Events (SSE) development server using Node.js on Alpine Linux. The setup provides a minimal foundation for building real-time, one-way communication from server to client using the EventSource API. Unlike WebSockets which require bidirectional communication, this Node.js SSE server focuses specifically on pushing data from server to browser clients with automatic reconnection and built-in event handling.
Developers building real-time dashboards, live notifications, or streaming data applications will find this configuration particularly valuable. The combination of Node.js's event loop architecture and SSE's simplicity creates an efficient solution for applications that need to push updates to multiple clients simultaneously without the complexity of full WebSocket implementations.
Key Features
- Node.js 20 Alpine Linux base image for minimal resource footprint and enhanced security
- Built-in EventSource API support with automatic client reconnection on connection drops
- Non-blocking I/O event loop architecture optimized for concurrent client connections
- Native text/event-stream content type handling for proper SSE protocol compliance
- Automatic event ID sequencing and last-event-id tracking for reliable message delivery
- Hot-reload development environment with volume mounting for rapid iteration
- Cross-origin resource sharing (CORS) compatibility for browser-based clients
- Memory-efficient streaming without buffering large datasets
Common Use Cases
- 1Real-time dashboard updates for system monitoring and analytics visualization
- 2Live notification systems for social media applications and messaging platforms
- 3Financial market data streaming for trading platforms and investment tools
- 4IoT sensor data broadcasting to multiple connected devices and monitoring systems
- 5Live sports scores and game updates for sports applications and websites
- 6Server log streaming and debugging tools for development teams
- 7Chat application message broadcasting and presence indicators
Prerequisites
- Docker and Docker Compose installed on the host system
- Port 3000 available on the host machine for the SSE server
- Basic JavaScript and Node.js knowledge for server implementation
- Understanding of EventSource API and browser-based event handling
- Minimum 512MB RAM available for Node.js runtime and application code
- Local ./app directory with server.js file containing SSE implementation
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 sse-server: 3 image: node:20-alpine4 container_name: sse-server5 restart: unless-stopped6 working_dir: /app7 command: node server.js8 volumes: 9 - ./app:/app10 ports: 11 - "3000:3000".env Template
.env
1# Create server.js with SSE endpointsUsage Notes
- 1Docs: https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events
- 2Development server at http://localhost:3000
- 3Create server.js with res.setHeader('Content-Type', 'text/event-stream')
- 4Browser: const es = new EventSource('/events'); es.onmessage = ...
- 5Simpler than WebSocket for one-way server-to-client streaming
- 6Auto-reconnection and event IDs built into protocol
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 sse-server:5 image: node:20-alpine6 container_name: sse-server7 restart: unless-stopped8 working_dir: /app9 command: node server.js10 volumes:11 - ./app:/app12 ports:13 - "3000:3000"14EOF1516# 2. Create the .env file17cat > .env << 'EOF'18# Create server.js with SSE endpoints19EOF2021# 3. Start the services22docker compose up -d2324# 4. View logs25docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/sse-server/run | bashTroubleshooting
- EventSource connection immediately closes: Ensure Content-Type header is set to 'text/event-stream' and Connection header is 'keep-alive'
- Browser shows 'net::ERR_INCOMPLETE_CHUNKED_ENCODING': Remove Content-Length header and use Transfer-Encoding: chunked for streaming responses
- Events not reaching client after server restart: Implement proper event ID tracking and handle last-event-id header in reconnection requests
- High memory usage with many clients: Implement proper stream cleanup and remove event listeners when clients disconnect
- CORS errors in browser console: Add appropriate Access-Control-Allow-Origin headers for cross-domain EventSource connections
- Container exits immediately: Verify server.js exists in ./app directory and contains valid Node.js code with proper event loop handling
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Ad Space
Shortcuts: C CopyF FavoriteD Download