2017-11-11 19 views
1

this tutorial을 연결하여 websockets 연결을 제공하는 스프링 부트 애플리케이션을 빌드했지만 스프링 부트 자체가 제공하는 것보다 다른 클라이언트의 웹 소켓에 연결할 수 없습니다.CORS와 Spring Websocket

complete directory in the GitHub repository that accompanies the tutorial에는 최종 스프링 부트 코드가 포함되어 있습니다. 이 저장소에서 index.htmlapp.js 개의 파일을 가져 와서 Node.js 서버에서 실행되는 다른 클라이언트를 만들었습니다. 그 후, 나는 연결 문자열을 localhost:8080 (스프링 부트가 실행되는 곳)을 가리 키도록 바 꾸었습니다. 그런 다음 Node.js 서버를 실행하고 웹 소켓을 사용하려고했지만 작동하지 않습니다.

첫 번째 문제는 .setAllowedOrigins("*")StompEndpointRegistry 레지스트리에 추가하면 쉽게 해결할 수있었습니다. 이 구성으로 websocket에 연결할 수 있었지만 지금은 소켓에서 메시지를받지 못했습니다.

내가 무엇을 놓치고 있는지 궁금합니다 ... 어떤 사람이 문제인지 알고 있습니까?

추출 된 파일은 index.htmlapp.js (이름이 index.js)으로 변경되고 테스트 목적으로 the Node.js server can be found here으로 변경됩니다. 실행하려면 종속성 (npm install)을 설치 한 다음 npm start을 실행하십시오. 서버는 http://localhost:3000/에 응답합니다.

답변

0

사실 질문/문제는 매우 어리 석습니다.

var socket = new SockJS('http://localhost:8080/gs-guide-websocket'); 
// ... 
stompClient.subscribe('http://localhost:8080/topic/greetings', cb); 
// ... 
stompClient.send("http://localhost:8080/app/hello", ...); 

내가 변경해야하는 유일한 라인은 처음이었다 문제는 내가 외부 응용 프로그램에 HTML/JS 파일을 추출 할 때, 나는 http://localhost:8080/...에 코드의 모든 하드 3 점 변경이었다. 나머지 두 개는 이미 열린 소켓의 주제에 대한 메시지 인 subscribesend에 대한 기능입니다. 따라서 URL 앞에는 접두어가 필요하지 않습니다 ...

var socket = new SockJS('http://localhost:8080/gs-guide-websocket'); 
// ... 
stompClient.subscribe('/topic/greetings', cb); 
// ... 
stompClient.send("/app/hello", ...);