2010-12-13 6 views
1

참고 : 나는 교차 게시 Grails의 사용자 메일 링리스트에서이 질문을했습니다Google 크롬에서 제대로 작동하도록 cometd를 구성하려면 어떻게해야합니까?

플러그인 this fantastic blog 가이드로 게시하고 cometd Grails는을, 내 기존 Grails를 설치 cometd을 얻을 수 있었다 사용이 주말 앱. FireFox와 IE에서 완벽하게 작동하지만 (믿거 나 말거나) Chrome에 문제가 있습니다. 내가 comet.init() 라인에서 일어나는 일을 자바 스크립트에서 알 수 있습니다. 나는 검색을 많이 해봤 웹 소켓 http://localhost:8080/myapp/cometd/handshake

에 대한 잘못된 URL 방식을, 그리고 크롬 웹 소켓과 로컬 호스트에 문제가 있다는 내용의 게시물을 발견 : 크롬의 개발자 도구를 사용하여

,이 오류를보고 있어요.
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 URL이 http : // 대신 http : //로 시작해야한다고 생각합니다. 아마도 내 문제이기는하지만 tomcat/grails로 구성하는 방법을 모르겠습니다.

내 문제를 해결하는 방법을 아는 사람이 있습니까?

+0

나는 내 자바 스크립트 코드 줄을 사용하여 임시 해결 찾은 것 같아 : cometd.unregisterTransport ('웹 소켓을'); 그러나 앞으로도 grails 프로젝트에서 Websocket 프로토콜을 어떻게 사용할 수 있는지 알고 싶습니다. – aasukisuki

답변

3

내 자바 스크립트에서 다음 코드 줄을 사용하여 임시 작업을 발견했다고 생각합니다. cometd.unregisterTransport ('websocket'); 하지만 앞으로도 내 grails 프로젝트에서 Websocket 프로토콜을 어떻게 사용할 수 있는지 알고 싶습니다.

+0

은 jQuery 1.7.2와 webtocket 전송을 등록 해제 한 cometd 2.4.3에서도 잘 작동했습니다. 팁 주셔서 감사합니다. –

1

Grails와 Cometd 플러그인을 사용하는 경우 Javascript에서 웹 소켓을 활성화해야합니다. Tomcat 플러그인을 Jetty 7 플러그인으로 대체했다. 긴 폴링을 사용하는 경우 구성 URL이 http : // 또는 https : //로 시작한다는 점에 유의하십시오. 웹 소켓을 사용하는 경우에는 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