Skip to content

Latest commit

 

History

History
79 lines (50 loc) · 2.88 KB

File metadata and controls

79 lines (50 loc) · 2.88 KB

Spring and Sockets

  • How to complete this guide?
  • create a repo, after that clone int in your machine.
  • Create a Web Controller.

Manual Initialization

1- Navigate to https://start.spring.io. This service pulls in all the dependencies you need for an application and does most of the setup for you.

2- Choose either Gradle or Maven and the language you want to use. This guide assumes that you chose Java.

3- Click Dependencies and select Spring Web, Thymeleaf, and Spring Boot DevTools.

4- Click Generate.

5- Download the resulting ZIP file, which is an archive of a web application that is configured with your choices.4

Create a Message-handling Controller

In Spring’s approach to working with STOMP messaging, STOMP messages can be routed to @Controller classes.

The following listing shows:

package com.example.messagingstompwebsocket;

import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.handler.annotation.SendTo; import org.springframework.stereotype.Controller; import org.springframework.web.util.HtmlUtils;

 @Controller
 public class GreetingController {


 @MessageMapping("/hello")
 @SendTo("/topic/greetings")
 public Greeting greeting(HelloMessage message) throws   Exception {
 Thread.sleep(1000); // simulated delay
  return new Greeting("Hello, " + HtmlUtils.htmlEscape(message.getName()) + "!");
  }

  }

The @MessageMapping annotation ensures that, if a message is sent to the /hello destination, the greeting() method is called.

Configure Spring for STOMP messaging

You can configure Spring to enable WebSocket and STOMP messaging.

 package com.example.messagingstompwebsocket;

 import org.springframework.context.annotation.Configuration;
 import org.springframework.messaging.simp.config.MessageBrokerRegistry;
 import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
 import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
 import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;

 @Configuration
 @EnableWebSocketMessageBroker
 public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

  @Override
  public void configureMessageBroker(MessageBrokerRegistry config) {
 config.enableSimpleBroker("/topic");
 config.setApplicationDestinationPrefixes("/app");
 }

 @Override
 public void registerStompEndpoints(StompEndpointRegistry registry) {
  registry.addEndpoint("/gs-guide-websocket").withSockJS();
 }
 
 }

WebSocketConfig is annotated with @Configuration to indicate that it is a Spring configuration class. It is also annotated with @EnableWebSocketMessageBroker. As its name suggests, @EnableWebSocketMessageBroker enables WebSocket message handling, backed by a message broker.