Puis-je configurer le socket.io chat sur heroku?
J'ai une simple prise.io application de chat que j'ai téléchargé à l'un des nouveaux Heroku 'cèdre' piles.
Maintenant j'ai presque tout fonctionne, mais j'ai frappé une pierre d'achoppement. Sur mon localhost, j'ouvre une connexion vers le serveur socket du client avec:
//lots of HTML omitted
socket = new io.Socket('localhost', {port: 8888});
Mais sur Heroku, j'ai évidemment devez le remplacer par quelque chose d'autre pour ces valeurs.
Je peux obtenez le port de l'objet de processus sur le serveur comme ceci:
port = process.env.PORT || 8888
et le passer à la vue.
Mais que dois-je remplacer 'localhost'
?
- c'est juste tought... pourriez-vous utiliser le document.domaine de la propriété?
Vous devez vous connecter pour publier un commentaire.
Ce qui a changé maintenant, comme d'octobre 2013, heroku avons ajouté websocket support:
https://devcenter.heroku.com/articles/node-websockets
Utilisation:
Pour activer les websockets et n'oubliez pas de supprimer:
heroku features:enable websockets
=> impossible de trouver cette fonctionnalité.La manière correcte selon la l'article sur heroku est:
Cela garantit que les io.Prise de ne pas essayer d'utiliser les WebSockets.
J'ai pu obtenir un Socket.IO v0.8 travailler sur Heroku de Cèdre, de la manière suivante:
Dans l'Express app (en CoffeeScript dans mon cas):
Et à l'intérieur de la face avant du Javascript de votre demande:
Liens utiles:
Après avoir essayé toutes les combinaisons sous le soleil, j'ai enfin juste laissé vide. Lo et voici, qui fonctionne parfaitement. Vous n'avez même pas besoin de le port.
J'ai été aussi à avoir ce problème sur heroku. J'ai été capable de le faire fonctionner en utilisant le nom d'hôte "myapp.herokuapp.com" (ou simplement la fenêtre.emplacement.nom d'hôte, de travailler à la fois locale et de la production) et la mise sur le port 80. Je suis en utilisant SocketIO la version 0.6.0.
Ne serait-il pas de mettre votre nom d'hôte?
2011-06-25T21:41:31+00:00 heroku[router]: Error H13 (Connection closed without response) -> GET appxxxx.herokuapp.com/socket.io/1/websocket/4fd434d5caad5028b1af690599f4ca8e dyno=web.1 queue= wait= service= status=503 bytes=
Ne peut dire le heroku routeur en face de l'app n'est pas configuré pour gérer web, trafic de socket?
[mise à jour]
Il semblerait que de 6/22/2011 la réponse est oui... heroku ne prend pas en charge la prise.io voir ce post: http://blog.heroku.com/archives/2011/6/22/the_new_heroku_2_node_js_new_http_routing_capabilities/
WebSocket is closed before the connection is established.