---
title: AnyCable
created: 2026-06-08
updated: 2026-06-08
type: app
tags: [catalogue, notifications, websockets, real-time, app-marathon-batch-rattrapage-3]
confidence: medium
contested: false
sources: [https://selfh.st/apps/?tag=Notifications, https://anycable.io]
---

# 🔔 AnyCable

> **Serveur WebSocket scalable pour Ruby/Rails** : drop-in replacement pour ActionCable, jusqu'à 10x plus performant. Pas une app « notification » classique mais un **middleware temps réel**.

## 📋 Informations Générales

| Champ | Valeur |
| :--- | :--- |
| **Site web** | [anycable.io](https://anycable.io) |
| **GitHub** | [anycable/anycable](https://github.com/anycable/anycable) |
| **License** | MIT |
| **Langage** | Go (serveur) + Ruby (gem client) |
| **Étoiles GitHub** | 1.8k ⭐ |
| **Catégorie** | [[cat-notifications|Notifications]] *(catégorie réelle : Real-time / WebSockets)* |

## 📝 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

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

### Docker Compose (composants)

```yaml
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
- [Documentation](https://docs.anycable.io/)
- [GitHub](https://github.com/anycable/anycable)
- [Benchmarks](https://docs.anycable.io/benchmarks)

## Pages Liées
- [[cat-notifications]] — Catégorie Notifications
- [[app-ntfy]] — Pour notifications simples
- [[recettes-docker-compose]] — Templates Docker
