2016-09-27 3 views
0

Я пытаюсь использовать websocket Java с весной 4. Я создал обработчик сервера. Вот мой код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 } 
 
}

Следующая я создал WebSocket configurer. Вот код

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 
 
}

В моем клиенте (JavaScript), я пытался подключиться к серверу

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

Когда я попытался выполнить команду клиент, я получил ошибку 404 Где проблема?

+0

Оказалось ли какое-либо решение этой проблемы? –

ответ

0

Добавьте примечание @Controller к классу WebsocketConfig, чтобы он мог обрабатывать запрос, поступающий от клиента.

@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

Я удалил аннотацию @Configuration в WebsocketConfig –

+0

Вы задаете setAllowedOrigins ("*"), как я указал в моем ответе выше? – abaghel

Смежные вопросы