Skip to main content

Stream Comparison

Choose the right streaming method for your use case by comparing WebSocket, Public SSE, and Private SSE features.

Feature Comparison Matrix

FeatureWebSocketPublic SSEPrivate SSE
Data CompletenessFullTruncatedFull
AuthenticationAPI KeyNoneToken Required
BidirectionalYesNoNo
Auto ReconnectManualBuilt-inBuilt-in
Setup ComplexityMediumLowHigh
Data Rate100 msg/sec1 msg/sec5 msg/sec
Max Connections5 per API key5 per IP3 per API key
Connection DurationUnlimited1 hour max30 min max
FilteringAdvancedBasicEnhanced
LatencyLowestLowLow
Browser SupportExcellentExcellentExcellent

Use Case Recommendations

WebSocket - Best For:

  • Interactive Applications: Chat applications, real-time collaboration
  • High-Frequency Trading: Market data, price updates
  • Gaming: Multiplayer games, live events
  • Control Systems: IoT device control, monitoring dashboards
  • Bidirectional Communication: Applications needing to send commands back

Public SSE - Best For:

  • Public Displays: Digital signage, public dashboards
  • Demo Applications: Product demos, proof of concepts
  • Development & Testing: Local development, integration testing
  • Educational Purposes: Learning real-time concepts
  • Low-Risk Monitoring: Public sentiment tracking

Private SSE - Best For:

  • Analytics Platforms: Social media analytics, trend analysis
  • Enterprise Applications: Internal monitoring, business intelligence
  • Research Applications: Academic research, data science projects
  • Content Monitoring: Brand monitoring, compliance tracking
  • Data Processing: ETL pipelines, data warehousing

Performance Considerations

Latency

  • WebSocket: ~50ms average latency
  • Public SSE: ~100ms average latency
  • Private SSE: ~75ms average latency

Throughput

  • WebSocket: Up to 100 messages per second
  • Public SSE: Limited to 1 message per second
  • Private SSE: Up to 5 messages per second

Resource Usage

  • WebSocket: Higher CPU and memory usage due to bidirectional handling
  • Public SSE: Lowest resource usage
  • Private SSE: Moderate resource usage with token management

Implementation Complexity

WebSocket Implementation

// Medium complexity
const ws = new WebSocket("wss://api.scrape.st/ws", [], {
  headers: { Authorization: "Bearer YOUR_API_KEY" },
});

ws.onopen = () => {
  ws.send(
    JSON.stringify({
      action: "subscribe",
      filters: { keywords: ["javascript"] },
    }),
  );
};

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  // Handle data
};

// Manual reconnection required

Public SSE Implementation

// Low complexity
const eventSource = new EventSource("https://api.scrape.st/sse/public");

eventSource.onmessage = (event) => {
  const data = JSON.parse(event.data);
  // Handle truncated data
};

// Automatic reconnection built-in

Private SSE Implementation

// High complexity
async function connectPrivateSSE() {
  const token = await generateToken();
  const eventSource = new EventSource(`https://api.scrape.st/sse/private?token=${token}`);

  eventSource.onmessage = (event) => {
    const data = JSON.parse(event.data);
    // Handle full data
  };

  // Token refresh and reconnection logic required
}

Cost Analysis

Development Cost

  • WebSocket: Medium development time, complex reconnection logic
  • Public SSE: Low development time, simple implementation
  • Private SSE: High development time, token management complexity

Operational Cost

  • WebSocket: Higher server resource usage
  • Public SSE: Lowest operational cost
  • Private SSE: Moderate operational cost with token overhead

Data Cost

  • WebSocket: Full data payload, higher bandwidth usage
  • Public SSE: Truncated data, lowest bandwidth usage
  • Private SSE: Full data, moderate bandwidth usage

Security Considerations

WebSocket Security

  • API key authentication required
  • Secure WebSocket (WSS) mandatory
  • Bidirectional communication increases attack surface

Public SSE Security

  • No authentication required
  • Data truncation provides privacy protection
  • Read-only communication reduces risk

Private SSE Security

  • Token-based authentication
  • Token expiration limits exposure
  • HTTPS required for all communications

Migration Paths

From Public SSE to Private SSE

  1. Implement token generation logic
  2. Update connection URLs with tokens
  3. Handle full data payloads
  4. Add token refresh mechanisms

From WebSocket to Private SSE

  1. Remove bidirectional communication logic
  2. Implement token management
  3. Adapt to unidirectional data flow
  4. Update error handling for SSE patterns

From Private SSE to WebSocket

  1. Add bidirectional communication capabilities
  2. Switch from token to API key authentication
  3. Implement manual reconnection logic
  4. Update message handling for WebSocket format

Decision Framework

Choose WebSocket if:

  • ✅ You need bidirectional communication
  • ✅ High message frequency is required
  • ✅ Lowest latency is critical
  • ✅ Interactive features are needed
  • ❌ Simple implementation is preferred

Choose Public SSE if:

  • ✅ Quick implementation is needed
  • ✅ Public data is sufficient
  • ✅ Development resources are limited
  • ✅ Testing or demo purposes
  • ❌ Complete data is required

Choose Private SSE if:

  • ✅ Complete data access is needed
  • ✅ Enhanced filtering is required
  • ✅ Enterprise-grade security is needed
  • ✅ Analytics use case
  • ❌ Bidirectional communication is needed

Final Recommendation

For most production use cases requiring complete data access, Private SSE offers the best balance of functionality, security, and implementation complexity. For interactive applications, WebSocket remains the superior choice. For quick demos and testing, Public SSE provides the simplest implementation path.
Ready to get started? Return to Introduction to Streams to begin your implementation.