1

Ich habe Probleme mit meiner app mit Action-Kabel auf Heroku:Config Aktion Kabel für Heroku - Fehler localhost: 3000/Kabel

WebSocket-Verbindung zu 'ws: // localhost: 3000/Kabel' ist fehlgeschlagen: Fehler in Verbindung Einrichtung: net :: ERR_CONNECTION_REFUSED

Mein production.rb:

config.action_cable.url = "wss://NAME.herokuapp.com/cable" 
    config.action_cable.allowed_request_origins = ['https://NAME.herokuapp.com', 'http://NAME.herokuapp.com'] 

ich habe versucht, auch den Server in den cable.js angeben:

@App ||= {} 
App.cable = ActionCable.createConsumer("wss://NAME.herokuapp.com/cable") 

Ich habe versucht, es in development.rb zu ändern, nur für den Fall, aber nichts hilft. Der Heroku versucht immer noch, sich mit localhost zu verbinden.

Eine andere seltsame Sache, die nichts damit zu tun hat, denke ich, ist, dass die App nicht in der Lage ist einige js Code wie: alert ('test') oder console.log ("haha") trotz einiger js zu verarbeiten Code funktioniert und ich habe Assets ausprobiert: Precompile auch.

In localhost funktioniert alles perfekt. Irgendeine Idee, was mit Heroku und der Einstellung falsch sein kann?

Antwort

0

Während ActionCable in Entwicklung war, erinnere ich mich, dass Sie 2 Server für die Kabelverbindung und für Rails starten mussten. Ich glaube nicht, dass das für die endgültige Veröffentlichung noch benötigt wird.

Meine Vermutung ist, dass Redis nicht auf Ihrer Heroku-Instanz bereitgestellt wurde, während ActionCable in der Produktion auf Redis für seine Serverkommunikation angewiesen ist.

Um dies zu beheben, sollten Sie Folgendes tun:

heroku addons:add redistogo

heroku config | grep REDISTOGO_URL

In Ihrem config/cable.yml, stellen Sie die Redis URL zum einen gegeben. Ich denke, Sie sollten auch ENV['REDISTOGO_URL'] anstelle der URL verwenden können.

Lassen Sie mich wissen, wenn das hilft.

+0

Ich habe den Redis-Server eingerichtet und das sollte nicht das Problem sein, aber trotzdem danke. Ich denke, das ist im Begriff, heroku zu sagen, wie man sich mit dem richtigen Server im Websocket verbindet. – Dudis

-1

Wenn es lokal, aber nicht remote funktioniert, kann es sich um ein SSL-Problem handeln. Stellen Sie sicher, dass Sie richtig einen SSL-Endpunkt für den sicheren websocket (WSS) einzurichten: https://devcenter.heroku.com/articles/ssl-endpoint

Auch gibt es eine ausgezeichnete Blog-Post auf Heroku darüber, wie Action-Kabel einzurichten: https://blog.heroku.com/real_time_rails_implementing_websockets_in_rails_5_with_action_cable. Leider erwähnt der Artikel nicht die Notwendigkeit, einen SSL-Endpunkt einzurichten, damit die Heroku-Bereitstellung funktioniert.