2013-08-13 6 views
3

ActiveMQ-Apollo 설치의 샘플을 통해 작업 중이며 examples/websocket을 가지고 놀고 있습니다. 이 파일에서 ActiveMQ-Apollo와 함께 sock.js를 통해 stomp.js를 사용하면 작동하지 않는 것 같습니다.

는 Stomp.js는 연결을 설정하는 데 사용되는 :

client = Stomp.client(url); 

예는 잘 작동하고 나는 메시지를 전송 및 수신되는 것을 볼 수 있어요. 문제는 Stomp가 때때로 사용할 수없는 기본 WebSocket을 사용한다는 것입니다. 그래서 SockJS 클라이언트 라이브러리와 통합하려고했습니다.

XMLHttpRequest cannot load ws://mylocaldomain.com:61623/info. Cross origin requests are only supported for HTTP. sockjs-0.3.js:807 
Uncaught Error: NetworkError: DOM Exception 19 
: 나중에 나는 다음과 같은 오류를 참조

<script src="http://cdn.sockjs.org/sockjs-0.3.min.js"></script> 
<script> 
    // use SockJS implementation instead of the browser's native implementation 
    var ws = new SockJS(url); 
    var client = Stomp.over(ws); 
    [...] 
</script> 

위의 코드는하지만, 제대로 실행이 나타납니다 :이 페이지 (http://jmesnil.net/stomp-websocket/doc/)에 StompJS의 예에 따라이 코드 가능해야한다

그런 다음, 나는 디버그 창 쇼이 메시지가 표시 :

Opening Web Socket... 
Whoops! Lost connection to undefined 

내가 mylocaldomain.com:80에서 페이지를 제공하고을하고, ActiveMQ는 아폴로 서버는 샘에서 실행 e 컴퓨터에서 다운로드하지만 포트 61623에서 수신 대기합니다. 또한 cdn.sockjs.org에서 직접 SockJS뿐만 아니라 StompJS의 최신 버전 (github의 dist 디렉토리에서)을 가져 왔습니다.

최신 크롬 및 Firefox (OSX)에서이 예제를 시도했지만 동일한 문제가 발생합니다. 연결이 설정되지 않았습니다.

다시, Apollo와 함께 제공되는 표준 예제로 돌아가지만, StockJS를 통한 StompJS가 실패하는 이유를 알고 싶습니다.

누구든지이 문제가 있습니까?

감사합니다. 기본적으로

Enabling CORS

W3C CORS Specification

서버 : 여기에 설명 된대로 -AP_

+0

표준 WebSocket을 사용하려고 시도했지만 StompJS는 정상적으로 작동하는 것 같습니다. 그래서, SockJS 라이브러리로 뭔가있을 수 있습니다 ... –

답변

1

당신은 크로스 원점 자원 공유 (CORS)를 지원하는 ActiveMQ를-아폴로 웹 구성을 수정해야 다음 작업을 수행해야합니다.

  • HTTP OPTIONS 요청 (일명 CORS 프리 플리 그 ht 요청)을 보내야합니다. (예를 들면 "*"모든 기원 허용 의미)
    • 액세스 제어 - 허용 출처 헤더 : 예
    • 액세스 제어 - 관련 메소드 헤더 (이은으로 OPTIONS 요청에 응답 포함 " X--으로 요청, 원산지, 콘텐츠 형식이 수락 ")

: POST는 PUT은 옵션")

  • 액세스 제어 - 허용 - 헤더 (예를 들어 "DELETE GET HTTP OPTIONS의 처리는 대개 하나의 웹 필터 일치하는 필터 패턴 "/ *"을 사용하여 수행 할 수 있습니다. 참고 사항 "cors_origin"WebSocket 커넥터 URL 쿼리 매개 변수 (ActiveMQ Apollo 1.7)