2016-03-28 4 views
15

Я создал следующее с помощью ActionCable, но не смог получить данные, которые транслируются.ActionCable не принимает данные

Комментарии Channel:

class CommentsChannel < ApplicationCable::Channel 
    def subscribed 
    comment = Comment.find(params[:id]) 
    stream_for comment 
    end 
end 

JavaScript:

var cable = Cable.createConsumer('ws://localhost:3000/cable'); 

var subscription = cable.subscriptions.create({ 
    channel: "CommentsChannel", 
    id: 1 
},{ 
    received: function(data) { 
    console.log("Received data") 
    } 
}); 

Он соединяется отлично и я могу видеть следующее в журналах:

CommentsChannel is streaming from comments:Z2lkOi8vdHJhZGUtc2hvdy9FdmVudC8x 

Я тогда вещать к та т поток:

ActionCable.server.broadcast "comments:Z2lkOi8vdHJhZGUtc2hvdy9FdmVudC8x", { test: '123' } 

Вопрос заключается в том, что функция received никогда не вызывается. Я делаю что-то неправильно?

Примечание: Я использую пакет npm для подключения из приложения BackboneJS.

+1

Замена адаптера кабеля от 'async' до' redis' в 'config/cable.yml' исправлена. –

ответ

20

Изменение адаптера кабеля от async до redis в config/cable.yml исправлено для меня. Не знаю, почему async не работал.

+0

Удивительный, имел ту же проблему. Рад, что вы опубликовали решение! Работал для меня. – DiegoSalazar

+1

@Artem Это не сработало для меня. Вещание не работает, даже если используется redis. На консоли сервера говорится: «[ActionCable] Вещание в room_channel: {: message =>" llllllllllll "}". Но полученная функция не вызывается. Я попробовал как с адаптером asyn, так и с адаптером redis. – sufinsha

+0

Я не знаю, почему он не работает для вас, но убедитесь, что сервер redis запущен, а узел redis установлен в 'cable.yml'. –

 Смежные вопросы

  • Нет связанных вопросов^_^