real time with rails 5
TRANSCRIPT
real time with rails 5
lucas renan
guru sorocaba
action cableseamlessly integrates websockets with the rest of
your rails app
yet another chat app
!
app/channels/rooms_channel.rb
class RoomsChannel < ApplicationCable::Channel def subscribed stream_from 'room_sorocaba_channel' # can be dynamic end
def unsubscribed # Any cleanup needed when channel is unsubscribed end
def send_message(data) ActionCable.server.broadcast('room_sorocaba_channel', data) endend
app/assets/javascripts/cable.js
(function() { this.App || (this.App = {});
App.cable = ActionCable.createConsumer();
}).call(this);
app/assets/javascripts/channels/rooms.jsApp.rooms = App.cable.subscriptions.create("RoomsChannel", { connected: function() { // Called when the subscription is ready for use on the server },
disconnected: function() { // Called when the subscription has been terminated by the server },
received: function(data) { // Called when there's incoming data on the websocket for this channel },
send_message: function() { return this.perform('send_message'); }});
config/routes.rb
# Serve websocket cable requests in-process mount ActionCable.server => '/cable'
config/cable.yml
development: adapter: async
test: adapter: async
production: adapter: redis url: redis://localhost:6379/1
config/environments/production.rb
config.action_cable.url = ENV['CABLE_URL'] config.action_cable.allowed_request_origins = ENV['APP_URL']
app/views/layouts/application.html.erb
<%= action_cable_meta_tag %>
https://github.com/lucasrenan/lucas-chat
heroku tutorialhttps://blog.heroku.com/
realtimerailsimplementingwebsocketsinrails5withactioncable
https://lucas-chat-rails5.herokuapp.com/chat
thanks :)