El Tea
El Tea

Reputation: 1216

How many Redis connections are used with Actioncable?

I'm looking at moving my app's deployment to Heroku, and I'd like to determine if it can correctly run there on the basic plan before putting in the effort to migrate. The basic plan limits Redis to 20 connections.

I don't fundamentally understand the Rails/Redis connection architecture. Is there a single connection to Actioncable, which is then distributing the data, or is the connection per actual client (i.e. one connection for every browser tab)?

Upvotes: 5

Views: 1904

Answers (1)

theterminalguy
theterminalguy

Reputation: 1941

As per the docs,

An individual user will create one consumer-connection pair per browser tab, window, or device they have open.

ActionCable lets you identify a connection using a connection identifier, typically a global object called current_user in most cases. With this approach, you can later retrieve all open connections by a given user (and potentially disconnect them all if the user is deleted or unauthorized or have too many connections open).

Also, note that ActionCable uses a worker pool to run connection callbacks and channel actions in isolation from your server's main thread.

Upvotes: 1

Related Questions