注:この質問はgrails-userメーリングリストにクロスポストしました
今週末、この素晴らしいブログ投稿をガイドとして使用し、cometd grailsプラグインを使用して、既存のgrailsアプリをcometdにインストールすることができました。すべてがFireFoxとIEで完全に機能します(信じられないかもしれませんが)が、GoogleChromeで問題が発生しています。私が知る限り、JavaScriptのcomet.init()行で発生していることがわかります。
Chromeの開発者ツールを使用すると、次のエラーが表示されます:WebSocketのURLスキームが間違っています http:// localhost:8080 / myapp / cometd / handshake
私はたくさんの検索を行い、ChromeにWebSocketとローカルホストに問題があることを示す投稿を見つけました。その知識を利用して、hostsファイルを次のように編集しました:
127.0.0.1 local.mydomain.com
その後、comet.init()のURLはhttp://local.mydomain.com:8080/myapp/cometd/handshakeになります。ただし、これでは問題は修正されず、Chromeでも同じ問題が発生していましたが、今回はポートが指定されていないように見えました。ローカルアプリをポート80で実行するように変更したところ、URLはhttp://local.mydomain.com/myapp/cometd/handshakeになりましたが、それでもサイコロはありません。
私の知る限り、cometd 2.0は、WebSocketをネイティブにサポートしていないブラウザー(Firefox、IEなど)で長いポーリングを使用してWebSocketをエミュレートし、WebSocketをサポートしているブラウザー(Chrome)でWebSocketを使用しているのでそれが私の問題の原因だと思います。
また、検索の結果、WebSocketのURLはhttp://ではなくws://で始まる必要があると思いました。これが私の問題かもしれませんが、tomcat/grailsでこれを構成する方法がわかりません。
誰かが私の問題を修正する方法を知っていますか?