Skip to main content

Subscribe to GoRails to get access to this episode and all other pro episodes, and new awesome content every month.

Subscribe Now
Only $19/month

Unlimited access. Cancel anytime.

51 ActionCable Introduction:

Realtime Notifications with ActionCable

Episode 125 · June 28, 2016

Learn how to implement realtime notifications with ActionCable

ActionCable


Resources

Authenticating ActionCable with Devise

# app/channels/application_cable/connection.rb
module ApplicationCable
  class Connection < ActionCable::Connection::Base
    identified_by :current_user

    def connect
      self.current_user = find_verfied_user
    end

    protected

    def find_verfied_user
      # We can just access Warden directly to find out if the user is logged in or not
      # Using Warden directly will give us access to that as it's what Devise uses internally for authentication
      if current_user = env['warden'].user
        current_user
      else
        reject_unauthorized_connection
      end
    end
  end
end

Transcripts

Subscribe or login to view the transcript for this episode.

Discussion


Fallback

Thanks, Chris! This is an awesome episode, you're the man!

Fallback

You're welcome! 🤓


Fallback

hey chris, I ve got this in my logs

/usr/local/opt/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/redis-3.3.1/lib/redis/client.rb:345:in `rescue in establish_connection': Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED) (Redis::CannotConnectError)

Fallback

You need to have Redis installed and running. If you're on a Mac, "brew install redis" assuming you have Homebrew.


Fallback

I watched this last night and got tripped up because my localhost isn't the default. After some fumbling I added this to my development.rb file. config.action_cable.allowed_request_origins = ['http://localhost:1701']


Fallback

I downloaded the repository, then I was testing what happened if the user changes the page, the server stills send pings to the client. Is that fine? Is the something to be worried about?


Fallback

Chris, any chance you could follow this episode up at some point and build the full drop down functionality like you did in the previous notification episodes???

thx,


Fallback

Should the warden check against current_user be == ?

if current_user = env['warden'].user


Fallback

I have the same problem below. I ve got this log

/Users/a960401/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:345:in `rescue in establish_connection': Error connecting to Redis on localhost:6379 (Errno::ECONNREFUSED) (Redis::CannotConnectError)

and I did brew install redis, but It doesn't work same. What I have to do??


Fallback

I liked this lesson but I had to change the model from Notifications to Messages b/c rails was telling me that Notifications is a reserved term. Anyone else have that issue? Maybe I messed something up but if I didn't it would be nice to have this rerecorded with a model like Messages so that it is easier to follow and the viewer can cut and paste things from the notes below without having to switch out terms. I also was not able to get the messages from the job to appear on the user pages. Not sure why. I got no errors but still Application.render never rendered anything on the page.

Fallback

I just went through it and I was able to create Notification model just fine


Fallback

There is crazy amount of information in this episode, great job.


Login or create an account to join the conversation.