10
votes

Câble d'action S'abonnant localement, mais pas sur Heroku

J'ai essayé tout ce que je peux trouver en ligne, et rien ne fonctionne. En espérant que certains yeux frais verront le problème. C'est ma première fois en utilisant ActionCable, et tout fonctionne très bien localement, mais en poussant à Heroku. Mes journaux ne montrent pas d'abonnements d'action en action tels que mon serveur Dev: xxx pré>

et lors de l'envoi d'un message, je vois [action] diffusion à msg_channel_34: code> mais ils sont Ne pas ajouter, que je devine signifie que la méthode reçue code> n'est pas accessible / appelée? p>

Je remarque sur les journaux de Heroku, il indique Écoute sur TCP: / /0.0.0.0:5000 CODE> Où AS DEV il écoute à Localhost: 3000. Devrais-je être pointunig vers mon application Heroku en quelque sorte? P>

Voici les fichiers de configuration pertinents: p>

procfile: p>

2017-01-25T20:32:57.329656+00:00 heroku[web.1]: Starting process with command `bundle exec puma -p 5000  ./config.ru`
2017-01-25T20:32:59.600554+00:00 app[web.1]: Puma starting in single mode...
2017-01-25T20:32:59.600574+00:00 app[web.1]: * Version 3.6.2 (ruby 2.3.1-p112), codename: Sleepy Sunday Serenity
2017-01-25T20:32:59.600575+00:00 app[web.1]: * Min threads: 0, max threads: 16
2017-01-25T20:32:59.600577+00:00 app[web.1]: * Environment: production
2017-01-25T20:33:02.375128+00:00 app[web.1]: profile controller
2017-01-25T20:33:02.588653+00:00 app[web.1]: Use Ctrl-C to stop
2017-01-25T20:33:02.588446+00:00 app[web.1]: * Listening on tcp://0.0.0.0:5000
2017-01-25T20:33:17.681469+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2017-01-25T20:33:17.681469+00:00 heroku[web.1]: Stopping process with SIGKILL
2017-01-25T20:33:17.862118+00:00 heroku[web.1]: Process exited with status 137
2017-01-25T20:33:57.501746+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2017-01-25T20:33:57.501908+00:00 heroku[web.1]: Stopping process with SIGKILL
2017-01-25T20:33:57.630071+00:00 heroku[web.1]: Process exited with status 137
2017-01-25T20:33:57.642753+00:00 heroku[web.1]: State changed from starting to crashed


2 commentaires

Avez-vous trouvé une solution encore?


@Codingactive Oui - J'ai posté la solution ci-dessous


4 Réponses :


2
votes

Votre procfile suggère que vous exécutez PUMA avec câble / câble.ru sur le port 28080. Aussi - Câble de fichier / config.ru ne doit pas contenir cette ligne:

ActionCable.server.config.allowed_request_origins = ["http://localhost:3000"]  


1 commentaires

J'ai enlevé la ligne ci-dessus et c'est toujours la même chose. J'ai eu le port 28080 dans mon procfile, d'un tutoriel - devrait-il dire quelque chose d'autre en plus 'ActionCable: Bundle Exec Puma -P 28080 câble / config.ru`? J'ai ajouté mes journaux Heroku, en cas d'aide qui aide. Merci! :)



2
votes

est votre nom d'application littéralement nom d'application code>? Je soupçonne pas. Les chances sont plutôt bonnes que ces valeurs ...

config.web_socket_server_url = "wss://app-name.herokuapp.com/cable" 
config.action_cable.allowed_request_origins = ['https://app-name.herokuapp.com', 'http://app-name.herokuapp.com']


2 commentaires

Ah oui, je viens de mettre cela aux fins de la publication de :)


Quelqu'un peut-il me dire la différence entre config.web_socket_server_url et config.action_cable.url ? Lequel est utilisé dans quel but?



10
votes

Le problème était mon hôte est l'application Heroku, mais les demandes provenaient du domaine personnalisé.

Pour résoudre:

heroku config: définissez les rails_host "http://www.example.com"

et ensuite dans la production.rb:

config.acte_cable.url = "WSS: // # {env ['rails_host']} / câble"


0 commentaires

0
votes

J'ai eu le même problème et j'ai trouvé la réponse dont j'avais besoin ici: Redis Gem 4+ Incompatibilité "Signifi 'Redis' pour adaptateur de pubsub câble d'action, mais le gemme n'est pas chargé" . Une fois que j'ai rétrogradé mes Redis à 3.1.0, a parfaitement travaillé.


0 commentaires