Как создать приложение Spring WebSocket с помощью HTML5 WebSocket API?
Последняя версия Spring WebSocket работает с библиотеками SockJS и StompJS. Но я не люблю использовать тему в моем приложении. Итак, как создать приложение Spring WebSocket с HTML5 WebSocket API и интегрировать наше приложение с Spring Security?
1 ответ
Я не смог найти хорошего примера о том, как настроить Spring Websocket без sockjs, но я нашел некоторую полезную документацию на сайте документации Spring, и я хотел бы поделиться этим. Итак, как создать приложение Spring WebSocket с помощью HTML5 WebSocket API?
Во-первых: создайте класс, который расширяет TextWebSocketHandler или BinaryWebSocketHandler, и аннотируйте его аннотацией @Component и переопределяйте его соответствующий метод. Этот класс работает как методы-обработчики в контроллерах.
@Component
public class SimpleWebSocketHandler extends TextWebSocketHandler {
@Override
protected void handleTextMessage(WebSocketSession session,
TextMessage message) throws Exception {
// Sends back response to client.
session.sendMessage(new TextMessage("Connection is all right."));
}
}
Второе: создайте класс конфигурации, который реализует WebSocketConfigurer, и аннотируйте его аннотациями @Configuration и @EnableWebSocket и переопределите его соответствующий метод. Этот класс использует уже созданный нами класс обработчика.
@Configuration
@EnableWebSocket
public class WebSocketConfigurations implements WebSocketConfigurer {
@Autowired
private SimpleWebSocketHandler simpleWebSocketHandler;
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
// Regsiters a handler for related endpoint.
registry.addHandler(simpleWebSocketHandler, "/chat");
}
}
Третье: добавьте все свои конечные точки WebSokcet в конфигурацию Spring Security.
httpSecurity.authorizeRequests()
.antMatchers("/chat").permitAll();
В-четвертых: мы создаем новый объект javascript WebSocket с соответствующим URL.
// Create WebSocket Object.
var ws = new WebSocket("ws://localhost:8080/chat");
// Runs when connecion is estabilished.
ws.onopen = function () {
// Sends request to server with string value.
ws.send("webSocket");
};
// Runs when response is ready.
// Use event to get response value.
ws.onmessage = function (event) {
};
Примечание. Формат URL-адреса WebSocket: ws://domain:port/endpoint