8
votes

ROR 5.0.0 ActionCable WSS Websocket Handshake: Code de réponse inattendu: 301

Bonjour, j'essaie de servir une simple conversation à l'aide de ROR 5.0.0 Beta (avec PUMA) Travailler en mode de production (dans localhost il n'y a pas de problèmes).

Ceci est ma configuration nginx : xxx

ceci est config /redis/cable.ymlleight/strong><

Production: URL: Redis: // localhost: 6379/1

Développement: URL: Redis: // localhost: 6379/2

Test: URL: Redis: // localhost: 6379/3

et config / environnements / production.rb xxx

et ceci est l'erreur que je reçois:

Application - [...]. JS: 27 Websocket Connexion à 'WSS: // Mydomain / Câble' a échoué: Erreur lors de la poignée de main: Code de réponse inattendue: 301

Toute astuce? :) merci


0 commentaires

3 Réponses :


1
votes

Votre WebSocket Uri est / câble / et non / câble , de sorte que ce dernier touchera le bloc Bloc. Essayez: XXX

En outre, je ne sais pas que vous avez besoin d'une pause là-bas. Je présume le manquant } entre les deux Les blocs est juste une faute de frappe dans la question.

EDIT1: Ajout de réécrit pour restaurer le mappage en amont correct.

EDIT2: solution alternative consiste à réécrire explicitement / câble à Code> / câble / comme ceci: xxx


4 commentaires

Modification de l'emplacement / câble / {...} TO / Câble me retourner "Connexion WebSocket sur 'WSS: // MyDomain / Câble' a échoué: Erreur lors de la poignée de main de bande: Code de réponse inattendu: 502"


Bad Gateway - Assurez-vous que vous avez le service en cours d'exécution sur le port 28080


Le pare-feu bloquait ce port, maintenant j'ai commuté Redis sur 4443 et "Websockets en amont" {127.0.0.1:4443} -> Erreur lors de la prise de main de Websocket: Code de réponse inattendu: 404 Au moins Mon code d'erreur change XD


Non trouvé - Qu'est-ce que URI en amont, vous avez probablement cassé le mappage de / câble / xxx sur / xxx en amont, car il nécessite le suivi /. Je vais éditer ma réponse.



0
votes

Je passe près de 5 heures hier essayant de résoudre ce problème particulier. J'ai fini par utiliser un domaine séparé pour la connexion Websocket appelé ws.example.com code> comme tout ce qui a entraîné un redirection 301 code>.

voici mon NGinx .conf code> fichier. J'ai supprimé les pièces SSL, mais vous pourriez simplement insérer le vôtre. Notez que vous avez besoin de Nginx 1.4+ comme tout avant que cette version ne prend pas en charge la proxy de bande WebSocket. P> xxx pré>

J'ai lu quelque part que autorisé_request_origins code> n'a pas Travaillez comme prévu pour que je suis allé la voie sûre (jusqu'à ce que le bogue soit corrigé) et a transformé le vérificateur d'utiliser complètement actioncable.server.config.disable_request_forgery_protection = true p>

Voici mon câble.ru code> Fichier pour le démarrage du câble d'action. P>

gem "rails", github: "rails/rails"


0 commentaires

3
votes

i résolu Ajout de passager de la phalusion.

NGinx config est maintenant: xxx

Vous devez supprimer Dossier par défaut Config / redis / câble.yml et déplacez ce fichier sur / config.

pour SSL simplement activer les options SSL par défaut et fonctionne .-)

Merci tout le monde pour le aide


1 commentaires

Ces configurent-ils un remplacement complet de ce qui a été décrit dans la question? Ou un ajout? Avez-vous "Activer les options SSL par défaut" dans Production.rb, i.e. config.force_ssl = true ?