grails - 如何配置 cometd 以与 google chrome 一起正常工作?

标签 grails google-chrome comet websocket cometd

注意:我已经在 grails-user 邮件列表中交叉发布了这个问题

本周末使用 this fantastic blog作为指南和cometd grails 插件发布后,我能够使用我现有的grails 应用程序安装cometd。一切都在 FireFox 和 IE 中完美运行(信不信由你),但我在使用 Google Chrome 时遇到了问题。据我所知,它发生在我的 javascript 中的 comet.init() 行上。

使用 Chrome 的开发者工具,我看到了这个错误:
WebSocket 的 url 方案错误 http://localhost:8080/myapp/cometd/handshake

我做了很多搜索,发现一篇文章说 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 通过在 native 不支持 WebSocket 的浏览器(Firefox、IE 等)中使用长轮询来模拟 WebSocket,并在支持它的浏览器(Chrome)中使用 WebSocket,所以我猜测这就是我的问题的来源。

搜索也让我相信 WebSocket url 应该以 ws://而不是 http://开头,所以也许这是我的问题,但我不知道如何使用 tomcat/grails 配置它。

有谁知道我可以如何纠正我的问题?

最佳答案

我想我在我的javascript中找到了使用这行代码的临时工作:cometd.unregisterTransport('websocket');但我仍然很想知道将来如何在我的 grails 项目中使用 Websocket 协议(protocol)

关于grails - 如何配置 cometd 以与 google chrome 一起正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4432101/

相关文章:

python - 收集日志选项卡的输出(Chromium 开发者工具)

grails - grails 2.5-可以修改构建脚本吗?

grails - Grails 2.3.8中两个位置的log4j日志记录配置

python - Google Chrome 远程调试 - 加载页面

comet - 简单的jquery ajax vs SignalR vs AspComet

java - 为 GWT Comet 使用气氛

apache mod proxy 和 tomcat comet

jquery - 需要在grails中实现确认框

grails - Grails异步集成测试

google-chrome - 避免按钮内的屏幕阅读器文本