Как правильно использовать cable?

Здравствуй, Тостер!
В rails 5 появился удобный cable для вебсокетов, но меня мучает как правильно организовывать процесс обмена данных и их обработки. Где можно почитать про это? К примеру, кейс - комментарии для постов в вк: я подгрузил 30 последних новостей.
1) Теперь я должен оформить подписку на изменения на все 30 новостей по отдельности? Хорошо, у меня в друзьях 300чел, я буду оформлять подписку на каждый чат сообщений?
2) Как создавать новый коммент: через restful интерфейс, а потом через broadcast транслировать? Или через каналы, создав/изменив/удалив новый коммент внутри?
3) Как правильно организовывать доступ пользователей к подпискам?
  • Вопрос задан
  • 655 просмотров
Решения вопроса 1
Dem1
@Dem1 Куратор тега Ruby on Rails
Ruby on Rails developer
1) Оформлять подписку нужно по id на конкретного пользователя, если появится новое сообщение(новость и т.д) мы его не получим, т.к на этот диалог(новость) ты не был подписан.

Пример подписки
def subscribed
  stop_all_streams
  stream_from "conversations:#{current_user.id}"
end


2) Можно и так и так.
3) Пример авторизации пользователя для devise
module ApplicationCable
  class Connection < ActionCable::Connection::Base
    identified_by :current_user

    def connect
      self.current_user = find_verified_user
      logger.add_tags 'ActionCable', "User #{current_user.id}"
    end

    protected

    def find_verified_user
      if (verified_user = env['warden'].user)
        verified_user
      else
        reject_unauthorized_connection
      end
    end
  end
end
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы