Retour aux outils
CommunicationIntermédiaireOpen sourceAuto-hébergeablev1.6.14

AnyCable

**Serveur WebSocket scalable pour Ruby/Rails** : drop-in replacement pour ActionCable, jusqu'à 10x p

MAJ 2026-06-14
AnyCable
Site officiel Code source★ 2 334

AnyCable remplace ActionCable (le serveur WebSocket de Rails) par une implémentation Go scalable. Permet de gérer des dizaines de milliers de connexions concurrentes sur un seul serveur, avec pub/sub distribué (Redis, NATS, PostgreSQL). Utilisé en production par : JetBrains, Travelport, etc.

Description

AnyCable remplace ActionCable (le serveur WebSocket de Rails) par une implémentation Go scalable. Permet de gérer des dizaines de milliers de connexions concurrentes sur un seul serveur, avec pub/sub distribué (Redis, NATS, PostgreSQL). Utilisé en production par : JetBrains, Travelport, etc.

Différence avec un serveur de notification classique : AnyCable est une librairie serveur (pas une app à installer) — vous l'intégrez dans votre app Rails. Ce n'est pas le bon choix si vous cherchez un push simple : voyez plutôt Ntfy ou Gotify.

Pour qui : équipes Rails qui veulent scaler les WebSockets sans réécrire en Go/Node.

Installation

Gemfile

gem "anycable-rails", "~> 1.4"

Docker Compose (composants)

version: '3.8'
services:
  anycable:
    image: ghcr.io/anycable/anycable-go:latest
    container_name: anycable
    restart: unless-stopped
    command: -p 8080 -r redis://redis:6379
    ports:
      - "8080:8080"

  redis:
    image: redis:7-alpine
    container_name: anycable-redis
    restart: unless-stopped

  # Your Rails app exposing ActionCable
  app:
    build: .
    environment:
      - ANYCABLE_URL=ws://anycable:8080
      - REDIS_URL=redis://redis:6379

Alternatives

Open Source

  • ActionCable (Rails) — Built-in, mais limité
  • Phoenix Channels (Elixir) — Excellente alternative
  • [[app-ntfy]] — Pour push simple (pas WebSocket générique)

Propriétaires

  • Pusher — SaaS WebSocket
  • Ably — Real-time PaaS
  • PubNub — Real-time messaging

Sécurité

  • WSS obligatoire via reverse proxy.
  • Auth via channels : AnyCable ne fait pas d'auth, votre app Rails le gère via connection.rb.
  • Rate limiting : configurer côté Go (--limits).
  • Idempotency : les broadcasts sont best-effort ; pour critiques, ajouter confirmation applicative.

Ressources