Rails 7 E109 Live vistor count. ActionCable, Turbo Broadcasts, Kredis

07/02/2023 (about 1 year ago)
hotwire turbo redis websockets kredis live update server side rendering

Let's add Live count for total website visitors and Live count for visitors inside a room.

Importantly, we will not deal with user REGISTRATION to identify a visitor. One browser session = one unique visitor with a session_id.

We will use turbo_stream_from to plug into an ActionCable Channel and track websocket subscriptions and un-subscriptions.
Whenever a user subscribes, we will add his browser session_id to a Kredis array.
We will Broadcast the updated Kredis array COUNT to everybody subscribed to the channel.

Sounds quite complex, but I still think of it as a very low-code solution.

Text walkthrough: https://blog.corsego.com/action-cable-broadcast-users-online
Episode source code with comments: https://github.com/corsego/109-live-visitor-count-action-cable-kredis-turbo/commit/645c08eb981edaaad919f070e300a2ad24d28b08

0:00 Demo - Track visitors on a website and in a room
1:51 Track all website visitors with Kredis and ActionCable
12:25 Update live vistiors count with Turbo Stream Broadcasts
14:29 Track visitors in a Room
20:40 Summary and final demo

Sign in to join the conversation