注意:我已经在 grails-user 邮件列表中交叉发布了这个问题
这个周末,使用这篇精彩的博客文章作为指南和 cometd grails 插件,我能够使用我现有的 grails 应用程序安装 cometd。一切都在 FireFox 和 IE 中完美运行(信不信由你),但我在使用 Google Chrome 时遇到了问题。据我所知,它发生在我的 javascript 中的 comet.init() 行上。
使用 Chrome 的开发人员工具,我看到了这个错误:WebSocket http://localhost:8080/myapp/cometd/handshake的 URL 方案错误
我做了很多搜索,发现一篇文章说 Chrome 在 WebSocket 和 localhost 上有问题。有了这些知识,我编辑了我的主机文件,看起来像:
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,并在支持它的浏览器(Chrome)中使用 WebSocket,所以我猜测这就是我的问题的来源。
搜索也让我相信 WebSocket url 应该以 ws:// 而不是 http:// 开头,所以也许这是我的问题,但我不知道如何使用 tomcat/grails 配置它。
有谁知道我可以如何纠正我的问题?