New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@socket.io/redis-adapter

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@socket.io/redis-adapter - npm Package Versions

8.3.0

Diff

Changelog

Source

8.3.0 (2024-03-13)

Bug Fixes

  • sharded: allow to target a specific socket ID in dynamic mode (#525) (cca38dc)
  • sharded: fix count in fetchSockets() method (#523) (bd32763)
  • sharded: fix SSUBSCRIBE memory leak with ioredis (#529) (2113e8d)

Features

  • sharded: add an option for dynamic private channels (#526) (50220f4)
darrachequesne
published 8.2.1 •

Changelog

Source

8.2.1 (2023-05-14)

Bug Fixes

  • sharded: ensure compatibility with ioredis (42c8ab6)
  • sharded: properly unsubscribe when closing (2da8d9e)
darrachequesne
published 8.2.0 •

Changelog

Source

8.2.0 (2023-05-02)

Bug Fixes

  • cleanup error handler to prevent memory leak (#490) (b5da02d)

Features

Sharded Pub/Sub

Sharded Pub/Sub was introduced in Redis 7.0 in order to help scaling the usage of Pub/Sub in cluster mode.

Reference: https://redis.io/docs/manual/pubsub/#sharded-pubsub

A dedicated adapter can be created with the createShardedAdapter() method:

import { Server } from 'socket.io';
import { createClient } from 'redis';
import { createShardedAdapter } from '@socket.io/redis-adapter';

const pubClient = createClient({ host: 'localhost', port: 6379 });
const subClient = pubClient.duplicate();

await Promise.all([
  pubClient.connect(),
  subClient.connect()
]);

const io = new Server({
  adapter: createShardedAdapter(pubClient, subClient)
});

io.listen(3000);

Minimum requirements:

Added in e70b1bd.

Support for node-redis cluster

The redis package now supports Redis cluster.

Added in 77ef42c.

Subscription modes

The subscriptionMode option allows to configure how many Redis Pub/Sub channels are used:

  • "static": 2 channels per namespace

Useful when used with dynamic namespaces.

  • "dynamic": (2 + 1 per public room) channels per namespace

The default value, useful when some rooms have a low number of clients (so only a few Socket.IO servers are notified).

const io = new Server({
  adapter: createShardedAdapter(pubClient, subClient, {
    subscriptionMode: "static"
  })
});

Added in d3388bf.

Credits

Huge thanks to @winchell for helping!

darrachequesne
published 8.1.0 •

Changelog

Source

8.1.0 (2023-02-08)

The socket.io-adapter package was added to the list of peerDependencies, in order to fix sync issues with the version imported by the socket.io package (see f07ff7b).

Features

Automatic removal of empty child namespaces

The close() method was implemented, in order to be used with the new cleanupEmptyChildNamespaces option.

Reference: https://github.com/socketio/socket.io/releases/tag/4.6.0

Added in fe89f7e.

darrachequesne
published 8.0.1 •

Changelog

Source

8.0.1 (2023-01-11)

This release pins the socket.io-adapter package to version ~2.4.0 instead of ^2.4.0.

darrachequesne
published 8.0.0 •

Changelog

Source

8.0.0 (2022-12-07)

Dependencies

Features

  • add option to allow usage of custom parser (#471) (73f6320)

Example with msgpackr:

import { unpack, pack } from "msgpackr";

io.adapter(createAdapter(pubClient, subClient, {
  parser: {
    encode(val) {
      return pack(val);
    },
    decode(val) {
      return unpack(val);
    }
  }
}));
  • remove deprecated methods (fb760d9)

BREAKING CHANGES

  • the remoteJoin(), remoteLeave(), remoteDisconnect() and sockets() methods are removed in favor of the official alternatives

Related: https://github.com/socketio/socket.io/commit/b25495c069031674da08e19aed68922c7c7a0e28

  • the format of Date objects is modified in a non backward-compatible way, as notepack.io now implements the MessagePack Timestamp extension type.

Reference: https://github.com/msgpack/msgpack/blob/master/spec.md#timestamp-extension-type

Previous versions of the adapter will not be able to parse the Date objects sent by newer versions.

  • Reference: https://github.com/darrachequesne/notepack/releases/tag/3.0.0
  • Diff: https://github.com/darrachequesne/notepack/compare/2.3.0...3.0.1
darrachequesne
published 7.2.0 •

Changelog

Source

7.2.0 (2022-05-03)

Bug Fixes

Features

  • broadcast and expect multiple acks (e4c40cc)

This feature was added in socket.io@4.5.0:

io.timeout(1000).emit("some-event", (err, responses) => {
  // ...
});

Thanks to this change, it will now work with multiple Socket.IO servers.

darrachequesne
published 7.1.0 •

Changelog

Source

7.1.0 (2021-11-29)

Features

  • add support for redis v4 (aa681b3)
  • do not emit "error" events anymore (8e5c84f)
  • send response to the requesting node only (f66de11)
darrachequesne
published 7.0.1 •

Changelog

Source

7.0.1 (2021-11-15)

Bug Fixes

  • allow numeric rooms (214b5d1)
  • ignore sessionStore in the fetchSockets method (c5dce43)
darrachequesne
published 7.0.0 •

Changelog

Source

7.0.0 (2021-05-11)

Features

  • implement the serverSideEmit functionality (3a0f29f)
  • remove direct redis dependency (c68a47c)
  • rename the package to @socket.io/redis-adapter (3cac178)

BREAKING CHANGES

  • the library will no longer create Redis clients on behalf of the user.

Before:

io.adapter(redisAdapter({ host: "localhost", port: 6379 }));

After:

const pubClient = createClient({ host: "localhost", port: 6379 });
const subClient = pubClient.duplicate();

io.adapter(redisAdapter(pubClient, subClient));
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc