注:我交張貼在Grails的用戶郵件列表,這個問題如何配置cometd以使用谷歌瀏覽器正常工作?
本週末使用this fantastic blog後作爲指導和Grails的的cometd插件,我能得到我現有的Grails安裝的cometd應用程序。一切工作完美的FireFox和IE瀏覽器(信不信由你),但我遇到谷歌瀏覽器的問題。從我可以告訴它發生在我的javascript中的comet.init()行。
使用Chrome的開發者工具,我看到這個錯誤: 錯誤的URL方案的WebSocket http://localhost:8080/myapp/cometd/handshake
我已經做了很多的搜索,並發現了一個帖子,指出Chrome瀏覽器與網頁套接字和本地主機的問題。有了這些知識,我修改了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網址應該以ws://而不是http://開頭,所以也許這是我的問題,但我不知道如何使用tomcat/grails進行配置。
有誰知道我可以如何糾正我的問題?
我想我已經找到了一個臨時變通使用此行代碼在我的javascript: cometd.unregisterTransport(「的WebSocket」); 但我仍然很想知道我將來如何在我的grails項目中使用Websocket協議。 – aasukisuki 2010-12-13 20:21:09