2015-08-28 4 views
11

Я пытаюсь протестировать websocket без использования библиотеки socketjs, а также я не хочу добавлять какое-либо топающее соединение.Spring 4 websocket без STOMP, socketjs

Я следую пример из StackOverflow вопрос: WebSocket with Sockjs & Spring 4 but without Stomp

Так что без Stomp сервера, мне удалось подключиться через socketjs библиотеку с URL: WS: // локальный: 8080/приветствие/741/0tb5jpyi/WebSocket

А теперь я хочу, чтобы удалить socketjs библиотеку, чтобы сырое соединение WebSocket (могут быть устройства, такие как Android, IOS, и т.д ...)

Когда я удалить параметр: .withSockJS(), я не удалось подключиться через websocket.

Я попытался следующие URL-адреса, но они не работали:

ws://localhost:8080/greeting/394/0d7xi9e1/websocket not worked 
ws://localhost:8080/greeting/websocket not worked 
ws://localhost:8080/greeting/ not worked 

который URL я должен использовать для подключения?

+0

как вам удалось запроса на обновление до кота о том, что «обновить форму протокола HTTP для Ws» –

ответ

5

Вы должны использовать ws://localhost:8080/greeting:

new WebSocket('ws://localhost:8080/greeting') 
+0

его работало с javascript но с предварительным клиентом отдыха, я получил 403 запрещенную ошибку. – melihcoskun

+0

Поведение по умолчанию - принимать только те же запросы происхождения, что может дать вам 403 при использовании Advanced Rest Client. Настройте разрешенное происхождение на конечной точке: registry.addHandler (приветствиеHandler(), "/greeting").setAllowedOrigins("*"); –

+0

это работает. Большое спасибо – melihcoskun

7

Я использую websockets без STOMP в своем проекте.

Следующая конфигурация работает с spring-boot.

добавить пружинный загрузочный WebSocket зависимость в pom.xml

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-websocket</artifactId> 
    <version>${spring-boot.version}</version> 
</dependency> 

Затем добавить класс (здесь WebSocketServerConfiguration.java), который настраивает WebSocket:

@Configuration 
@EnableWebSocket 
public class WebSocketServerConfiguration implements WebSocketConfigurer { 

    @Autowired 
    protected MyWebSocketHandler webSocketHandler; 

    @Override 
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { 
     registry.addHandler(webSocketHandler, "/as"); 
    } 
} 

, наконец, вы можете написать WebsocketHandler. Spring предоставляет вам различные абстрактные классы для WebSocketHandlers (в основном пакете: org.springframework.web.socket.handler). Мой websocket настроен без STOMP, и мой клиент не использует socket.js. Следовательно, MyWebSocketHandler расширяет TextWebSocketHandler и переопределяет методы для ошибок, открытия и закрытия соединений и полученных текстов.

@Component 
public class MyWebSocketHandler extends TextWebSocketHandler { 
    ... 

    @Override 
    public void handleTransportError(WebSocketSession session, Throwable throwable) throws Exception { 
     LOG.error("error occured at sender " + session, throwable); 
     ... 
    } 

    @Override 
    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { 
     LOG.info(String.format("Session %s closed because of %s", session.getId(), status.getReason())); 

     ... 
    } 

    @Override 
    public void afterConnectionEstablished(WebSocketSession session) throws Exception { 
     LOG.info("Connected ... " + session.getId()); 

     ... 
    } 

    @Override 
    protected void handleTextMessage(WebSocketSession session, TextMessage jsonTextMessage) throws Exception { 
     LOG.debug("message received: " + jsonTextMessage.getPayload()); 
     ... 
    } 
} 
+0

спасибо за ответ duffy356, у меня такая же конфигурация , Я пытаюсь проверить подключение к chrome advanced rest client plugin. В моем предыдущем проекте мне удалось подключить websocket к этому плагину. Но проект не был основан на пружине. Теперь я не могу подключить websocket через url: ws: // localhost: 8080/greeting /. Я не мог найти правильный URL для подключения. есть идея? – melihcoskun

+0

поддерживает хромированные клиентские плагины для поддержки клиентов? – duffy356

+0

попробуйте подключиться к серверной консоли Chrome. – duffy356

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

  • Нет связанных вопросов^_^