Note: J'ai posté croisée cette question dans la liste de diffusion Grails utilisateurComment configurer cometd pour qu'il fonctionne correctement avec google chrome?
Ce week-end en utilisant this fantastic blog après comme guide et les cometd plug-in, j'ai pu Grails pour obtenir cometd installé avec mes Grails existants app. Tout fonctionne parfaitement dans FireFox et IE (croyez-le ou non) mais j'ai des problèmes avec Google Chrome. D'après ce que je sais, ça se passe sur la ligne comet.init() dans mon javascript.
Utilisation des outils de développement de Chrome, je vois cette erreur: schéma d'URL incorrect pour http://localhost:8080/myapp/cometd/handshake WebSocket
Je l'ai fait beaucoup de recherche, et a trouvé un poste indiquant que Chrome a des problèmes avec WebSocket et localhost. Avec cette connaissance, j'édité mon fichier hosts pour ressembler à quelque chose comme:
127.0.0.1 local.mydomain.com
L'URL pour comet.init() devient alors http://local.mydomain.com:8080/myapp/cometd/handshake. Cependant, cela n'a pas corrigé le problème, et Chrome avait le même problème, mais cette fois, il semblait que le port n'était pas spécifié. J'ai changé mon application locale pour fonctionner sur le port 80, et l'URL est alors devenue http://local.mydomain.com/myapp/cometd/handshake, mais toujours pas de dés. D'après ce que je peux dire, le cometd 2.0 émule WebSocket en utilisant une interrogation longue dans les navigateurs qui ne supportent pas nativement WebSocket (Firefox, IE, etc), et utilise WebSocket dans les navigateurs qui le supportent (Chrome), donc je suppose que c'est de là que vient mon problème. La recherche m'a également amené à croire que les URL de WebSocket devraient commencer par ws: // au lieu de http: //, c'est peut-être mon problème, mais je ne sais pas comment le configurer avec tomcat/grails.
Est-ce que quelqu'un sait comment je peux corriger mon problème?
Je pense que je l'ai trouvé un travail temporaire autour de l'utilisation de cette ligne de code dans mon javascript: cometd.unregisterTransport (« websocket »); Mais j'aimerais toujours savoir comment je pourrais utiliser le protocole Websocket avec mon projet grails dans le futur. – aasukisuki