Ответ 1
Вы должны использовать ws://localhost:8080/greeting
:
new WebSocket('ws://localhost:8080/greeting')
Я пытаюсь протестировать websocket без использования библиотеки socketjs, а также я не хочу добавлять какое-либо топовое соединение.
Я следую примеру из stackoverflow вопроса: WebSocket с Sockjs и Spring 4, но без Stomp
Итак, без stomp-сервера мне удалось подключиться через библиотеку socketjs с URL-адресом: ws://localhost: 8080/greeting/741/0tb5jpyi/websocket
И теперь я хочу удалить библиотеку socketjs, чтобы разрешить подключение к исходному веб-соединению (могут быть такие устройства, как 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-адрес я должен использовать для подключения?
Вы должны использовать ws://localhost:8080/greeting
:
new WebSocket('ws://localhost:8080/greeting')
Я использую websockets без STOMP в своем проекте.
Следующая конфигурация работает с spring-boot
.
добавить spring зависимость загрузки 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());
...
}
}