Как настроить Cometd для правильной работы с Google Chrome? - PullRequest
1 голос
/ 13 декабря 2010

Примечание. Я добавил этот вопрос в список рассылки пользователей grails

В эти выходные, используя этот фантастический блог в качестве руководства и плагина Cometd Grails,Я смог установить Cometd с моим существующим приложением Grails.Все отлично работает в FireFox и IE (хотите верьте, хотите нет), но у меня проблемы с Google Chrome.Из того, что я могу сказать, это происходит в строке comet.init () в моем javascript.

При использовании инструментов разработчика Chrome я вижу эту ошибку: Неверная схема URL для WebSocket http://localhost:8080/myapp/cometd/handshake

Я много занимался поиском и нашел сообщение о том, что в Chrome есть проблемы с WebSocket и localhost.Имея это знание, я отредактировал свой файл hosts так, чтобы он выглядел примерно так:
127.0.0.1 local.mydomain.com

URL-адрес для comet.init () затем становится http://local.mydomain.com:8080/myapp/cometd/handshake. Однако этоне исправил проблему, и у Chrome возникла та же проблема, но на этот раз казалось, что ей не нравится указанный порт.Я изменил свое локальное приложение, чтобы оно работало на порте 80, и тогда URL стал http://local.mydomain.com/myapp/cometd/handshake,, но все еще без кубиков.

Из того, что я могу сказать, cometd 2.0 эмулирует WebSocket, используя длинный опрос в браузерахкоторые изначально не поддерживают WebSocket (Firefox, IE и т. д.) и используют WebSocket в браузерах, которые его поддерживают (Chrome), поэтому я предполагаю, что именно отсюда моя проблема.

Поиск имееттакже заставляет меня поверить, что URL-адреса WebSocket должны начинаться с ws: // вместо http://,, так что, возможно, это моя проблема, но я не знаю, как настроить это с помощью tomcat / grails.

Кто-нибудь знает, какЯ могу исправить мою проблему?

Ответы [ 2 ]

3 голосов
/ 24 февраля 2011

Я думаю, что я нашел временную работу вокруг использования этой строки кода в моем javascript: cometd.unregisterTransport ('websocket');Но я все еще хотел бы знать, как я мог бы использовать протокол Websocket с моим проектом grails в будущем

1 голос
/ 18 июля 2011

Если вы используете Grails и плагин Cometd, убедитесь, что вы просто включили веб-сокеты из Javascript.Вы также должны заменить плагин Tomcat на плагин Jetty 7.Имейте в виду, что если вы используете длинный опрос, ваш URL-адрес configure будет начинаться с http: // или https: // если вы используете websockets, он должен начинаться с wss: //

попробуйте это

var url = "";
if (Websocket === undefined) {
   url = "http://mydomain/myconext/cometd";
} else {
  url = "ws://mydomain/myconext/cometd";
} 

cometd.configure({
    url: url
});

Я рекомендую использовать флэш-мост.Это было бы намного быстрее, чем при использовании длинного опроса.Смотрите ссылку ниже.https://github.com/gimite/web-socket-js

...