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

这个周末,使用this fantastic blog帖子作为指南和cometd grails插件,我可以使用现有的grails应用程序安装cometd。一切都可以在FireFox和IE中完美运行(信不信由你),但是Google Chrome浏览器存在问题。据我所知,它发生在我的JavaScript的comet.init()行上。

使用Chrome的开发人员工具,我看到此错误:
WebSocket http://localhost:8080/myapp/cometd/handshake的URL方案错误

我已经做了很多搜索,发现有一篇文章指出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,并在支持它的浏览器(Chrome)中使用WebSocket,所以我猜猜这就是我的问题所在。

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

有谁知道我该如何解决我的问题?

最佳答案

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

关于grails - 如何配置Cometd以使其与Google Chrome兼容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4432101/

10-10 17:31