2016-09-27 5 views
0

스프링 4로 websocket Java를 사용하려고합니다. 서버 처리기를 만들었습니다. 다음은 내 코드 Websocket Spring 4

다음 내가 만든

import java.util.logging.Logger; 
 

 
import org.springframework.web.socket.CloseStatus; 
 
import org.springframework.web.socket.WebSocketMessage; 
 
import org.springframework.web.socket.WebSocketSession; 
 
import org.springframework.web.socket.handler.TextWebSocketHandler; 
 

 
public class ServerHandler extends TextWebSocketHandler{ 
 
\t 
 
\t private Logger logger = Logger.getLogger(this.getClass().getName()); 
 
\t 
 
\t @Override 
 
\t public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { 
 
\t \t // TODO Auto-generated method stub 
 
\t \t logger.info("Connection clodes with websocket server: session id " + session.getId()); 
 
\t } 
 
\t 
 
\t @Override 
 
\t public void afterConnectionEstablished(WebSocketSession session) throws Exception { 
 
\t \t // TODO Auto-generated method stub 
 
\t \t logger.info("Connected user with websocket server: session id " + session.getId()); 
 
\t } 
 
\t 
 
\t @Override 
 
\t public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception { 
 
\t \t // TODO Auto-generated method stub 
 
\t \t 
 
\t \t super.handleMessage(session, message); 
 
\t } 
 
\t 
 
\t @Override 
 
\t public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { 
 
\t \t // TODO Auto-generated method stub 
 
\t \t super.handleTransportError(session, exception); 
 
\t } 
 
}
웹 소켓 구성 장치입니다. 내가를 실행하려고하면 다음 코드

import org.springframework.context.annotation.Bean; 
 
import org.springframework.context.annotation.Configuration; 
 
import org.springframework.web.socket.config.annotation.EnableWebSocket; 
 
import org.springframework.web.socket.config.annotation.WebSocketConfigurer; 
 
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; 
 

 
@Configuration 
 
@EnableWebSocket 
 
public class WebsocketConfig implements WebSocketConfigurer{ 
 

 
\t 
 
\t @Override 
 
\t public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { 
 
\t \t registry.addHandler(myHandler(), "/websocket").withSockJS(); 
 
\t \t 
 
\t } 
 
\t 
 
\t @Bean 
 
    public ServerHandler myHandler() { 
 
     return new ServerHandler(); 
 
    } 
 
\t 
 
}
내 클라이언트 (자바 스크립트)에서

은, 내가 서버

var sock = new SockJS('http://localhost:9999/websocket');

에 연결을 시도 클라이언트, 404 오류가 발생했습니다 어디에 문제가 있습니까?

+0

이 문제점에 대한 해결책을 찾았습니까? –

답변

0

WebSocketConfig 클래스에 @Controller 어노테이션을 추가하여 클라이언트에서 오는 요청을 처리 할 수 ​​있도록합니다.

@EnableWebSocket 
@Controller 
public class WebsocketConfig implements WebSocketConfigurer{ 

다른 도메인으로 연결할 때 오류가 발생하지 않도록 setAllowedOrigins()를 설정하십시오.

registry.addHandler(myHandler(), "/websocket").setAllowedOrigins("*").withSockJS(); 
+0

업데이트 후 다른 오류가 발생했습니다. XMLHttpRequest는 http : // localhost : 9999/websocket/info? t = 1474989961280을로드 할 수 없습니다. 'Access-Control-Allow-Origin'헤더가 요청 된 리소스에 없습니다. 따라서 'http : // localhost : 8081'은 액세스가 허용되지 않습니다. 응답에 HTTP 상태 코드 404가 있습니다. –

+0

WebsocketConfig에서 @Configuration 주석을 제거했습니다. –

+0

위 대답에서 주어진대로 setAllowedOrigins ("*")를 설정하고 있습니까? – abaghel

관련 문제