Run many Socket.IO servers that behave like one. A message sent from any server reaches every connected client โ no matter which server they're on โ using Valkey as the coordinator.
Real apps don't run on one server. Chat apps, live dashboards, multiplayer games, notifications โ they run on 5, 10, 50 servers behind a load balancer. Without an adapter, each server is an island: it can only message its own clients. This package connects the islands. That's the entire job.
Add more servers without breaking real-time delivery.
Live chat, notifications, and presence across a whole cluster.
Multiplayer games, live leaderboards, collaborative editing.
Broadcast to rooms that span multiple servers, seamlessly.
The killer line: the same proven adapter, but on open-source Valkey instead of Redis.
| socket.io-redis-adapter | socket.io-valkey-adapter | |
|---|---|---|
| Works | โ battle-tested | โ identical code (96 tests pass) |
| Backend | Redis | Valkey |
| License | No longer fully open source (RSALv2 / SSPL since 2024) | BSD โ open source forever, Linux Foundation backed |
| Migration cost | โ | Zero โ drop-in, no code changes |
In 2024 Redis changed its license away from pure open source. Many companies and OSS projects must move off Redis for legal/compliance reasons. Valkey is the official open-source fork (BSD, Linux Foundation). This package is their escape hatch โ keep Socket.IO working, just point it at Valkey.
Because Valkey speaks the same protocol as Redis, this adapter is byte-for-byte the same logic as the Redis one. A team switches by changing one import. No relearning, no risk โ the "switch in 30 seconds" story is the whole appeal.
Valkey is community-driven, actively developed, and free of the licensing/cost uncertainty hanging over Redis. Teams standardizing their whole stack on Valkey get a first-party Socket.IO integration that fits.
โ before// tied to Redis const { createAdapter } = require("@socket.io/redis-adapter"); const Redis = require("ioredis");
โ after โ one-line swap// now on open-source Valkey const { createAdapter } = require("socket.io-valkey-adapter"); const Valkey = require("iovalkey");
The value in one line: it removes the only thing tying Socket.IO scaling to Redis. It makes Valkey a first-class option.