samadadi
samadadi

Reputation: 3400

How to Create Spring WebSocket Application With HTML5 WebSocket API?

Recent Version of Spring WebSocket works with SockJS and StompJS libraries. But i don't like to use theme in my application. So how to create Spring WebSocket application with HTML5 WebSocket API and integrate our application with Spring Security?

Upvotes: 5

Views: 1287

Answers (1)

samadadi
samadadi

Reputation: 3400

I could not find any good example on how to configure spring websocket without sockjs but i found some helpful documentation in spring documentation site and i like to share that. Well, How to Create Spring WebSocket Application With HTML5 WebSocket API?

First: Create a Class that extends TextWebSocketHandler or BinaryWebSocketHandler and Annotate it with @Component annotation and Override its appropriate method.This Class works like handler methods in controllers.

@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."));
    }
}

Second: Create a Configuration Class that implements WebSocketConfigurer and Annotate it with @Configuration and @EnableWebSocket annoations and Override its appropriate method.This Class uses Handler Class that we created already.

@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");
    }
}

Third: Add all your WebSokcet Endpoints to your Spring Security Configuration.

httpSecurity.authorizeRequests()
    .antMatchers("/chat").permitAll();

Fourth: We create a new javascript WebSocket objet with appropriate 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) {

};

Note: WebSocket URLs Format: ws://domain:port/endpoint

Upvotes: 4

Related Questions