2016-03-28 13 views
15

Ho creato quanto segue utilizzando ActionCable ma non in grado di ricevere alcun dato che viene trasmesso.ActionCable Not Receiving Data

Commenti Canale:

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") 
    } 
}); 

Si collega benissimo e posso vedere il seguente nei registri:

CommentsChannel is streaming from comments:Z2lkOi8vdHJhZGUtc2hvdy9FdmVudC8x 

ho poi trasmesso a tha t flusso:

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

Il problema è che la funzione received non viene mai chiamato. Sto facendo qualcosa di sbagliato?

Nota: sto utilizzando il pacchetto n. actioncable per connettersi da un'applicazione BackboneJS.

+1

La modifica dell'adattatore del cavo da 'async' a' redis' in 'config/cable.yml' è stata corretta. –

risposta

20

Cambiare l'adattatore del cavo da async a redis in config/cable.yml risolto per me. Non sei sicuro del perché async non funzionasse.

+0

Fantastico, ha avuto lo stesso problema. Sono contento che hai postato la soluzione! Ha funzionato per me – DiegoSalazar

+1

@Artem Non ha funzionato per me. La trasmissione non funziona anche se si usa redis. La console del server dice: "[ActionCable] Trasmissione a room_channel: {: message =>" llllllllllll "}". Ma la funzione ricevuta non viene chiamata. Ho provato con sia l'adattatore asyn che l'adattatore redis. – sufinsha

+0

Non so perché non funzioni per voi, ma assicuratevi che il server redis sia in esecuzione e che l'host redis sia impostato in 'cable.yml'. –

Problemi correlati