Как создать приложение 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

Другие вопросы по тегам