2015년 12월 10일 목요일

Spring WebSocket

There is a way to use websocket by using stomp,sockJs and spring.

pom.xml


 4.0.0
 org.test.blog
 sample
 0.1.0
 
  org.springframework.boot
  spring-boot-starter-parent
  1.3.0.RELEASE
 
 
  1.7
 
 
  
   org.springframework.boot
   spring-boot-starter-web
  
  
   org.projectlombok
   lombok
   1.16.6
  
  
   org.springframework.boot
   spring-boot-starter-websocket
  
  
   org.springframework
   spring-messaging
  
 

 
  
   
    org.springframework.boot
    spring-boot-maven-plugin
   
  
 



src/main/java/TestApplication

package org.test.blog;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class TestApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class);
    }
}


src/main/java/GreetingController

package org.test.blog.controller;

import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Controller;
import org.test.blog.model.Greeting;
import org.test.blog.model.HelloMessage;

@Controller
public class GreetingController {

    @MessageMapping(value = "/hello")
    @SendTo("/topic/greetings")
    public Greeting greeting(HelloMessage message) throws InterruptedException {
        return new Greeting("Hello, " + message.getName() + "!");
    }
}


src/main/java/Greeting

package org.test.blog.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Greeting {

    private String content;
}


src/main/java/HelloMessage

package org.test.blog.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class HelloMessage {

    private String name;
}

src/main/java/WebSocketConfig

package org.test.blog.config;

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

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

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

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/hello").withSockJS();
    }
}


classpath:/static/test.html




    Hello WebSocket
    
    
    




You can find the action that a server send the message by using "/topic/greetings" url
to client, after a clent send the request by using "/app/hello" url.

original source : https://spring.io/guides/gs/messaging-stomp-websocket/

댓글 없음 :

댓글 쓰기