Adding code for the tutorial tracked under BAEL-2488 (#6598)
This commit is contained in:
parent
df87de7d8f
commit
33e7f0d8e3
|
@ -0,0 +1,67 @@
|
|||
package com.baeldung.springsockets.config;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.messaging.converter.MessageConverter;
|
||||
import org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolver;
|
||||
import org.springframework.messaging.handler.invocation.HandlerMethodReturnValueHandler;
|
||||
import org.springframework.messaging.simp.config.ChannelRegistration;
|
||||
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;
|
||||
import org.springframework.web.socket.config.annotation.WebSocketTransportRegistration;
|
||||
|
||||
@Configuration
|
||||
@EnableWebSocketMessageBroker
|
||||
public class WebSocketMessageBrokerConfig implements WebSocketMessageBrokerConfigurer {
|
||||
|
||||
@Override
|
||||
public void registerStompEndpoints(StompEndpointRegistry registry) {
|
||||
registry.addEndpoint("/ws");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configureMessageBroker(MessageBrokerRegistry config) {
|
||||
config.setApplicationDestinationPrefixes("/app");
|
||||
config.enableSimpleBroker("/topic");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configureWebSocketTransport(WebSocketTransportRegistration registry) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configureClientInboundChannel(ChannelRegistration registration) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configureClientOutboundChannel(ChannelRegistration registration) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean configureMessageConverters(List<MessageConverter> messageConverters) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package com.baeldung.springsockets.controllers;
|
||||
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(path = "/rest")
|
||||
public class RestAPIController {
|
||||
|
||||
@GetMapping(path = "/{name}", produces = "application/json")
|
||||
public String getGreeting(@PathVariable("name") String name) {
|
||||
return "{\"greeting\" : \"Hello, " + name + "!\"}";
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package com.baeldung.springsockets.controllers;
|
||||
|
||||
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;
|
||||
|
||||
import com.baeldung.springsockets.models.Greeting;
|
||||
import com.baeldung.springsockets.models.Message;
|
||||
|
||||
@Controller
|
||||
public class WebSocketController {
|
||||
|
||||
@MessageMapping("/hello")
|
||||
@SendTo("/topic/greetings")
|
||||
public Greeting greeting(Message message) throws Exception {
|
||||
return new Greeting("Hello, " + HtmlUtils.htmlEscape(message.getName()) + "!");
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package com.baeldung.springsockets.models;
|
||||
|
||||
public class Greeting {
|
||||
|
||||
private String content;
|
||||
|
||||
public Greeting() {
|
||||
}
|
||||
|
||||
public Greeting(String content) {
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
public String getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package com.baeldung.springsockets.models;
|
||||
|
||||
public class Message {
|
||||
|
||||
private String name;
|
||||
|
||||
public Message() {
|
||||
}
|
||||
|
||||
public Message(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Demo for RESTful Service for Comparison to WebSocket</title>
|
||||
<link href="/webjars/bootstrap/css/bootstrap.min.css" rel="stylesheet">
|
||||
<script src="/webjars/jquery/jquery.min.js"></script>
|
||||
<script src="/webjars/sockjs-client/sockjs.min.js"></script>
|
||||
<script src="/webjars/stomp-websocket/stomp.min.js"></script>
|
||||
<script src="/rest.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="main-content" class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<label for="name">Name: </label>
|
||||
<input type="text" id="name" class="form-control" placeholder="Please enter yout name">
|
||||
</div>
|
||||
<button id="send" class="btn btn-default" type="submit">Send</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<table id="conversation" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Greetings</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="greetings">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,21 @@
|
|||
var request = new XMLHttpRequest()
|
||||
|
||||
function sendName() {
|
||||
request.open('GET', 'http://localhost:8080/rest/'+$("#name").val(), true)
|
||||
request.onload = function () {
|
||||
var data = JSON.parse(this.response)
|
||||
showGreeting(data.greeting)
|
||||
}
|
||||
request.send()
|
||||
}
|
||||
|
||||
function showGreeting(message) {
|
||||
$("#greetings").append("<tr><td>" + message + "</td></tr>");
|
||||
}
|
||||
|
||||
$(function () {
|
||||
$("form").on('submit', function (e) {
|
||||
e.preventDefault();
|
||||
});
|
||||
$( "#send" ).click(function() { sendName(); });
|
||||
});
|
|
@ -0,0 +1,39 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Demo for WebSocket for Comparison to RESTful Service</title>
|
||||
<link href="/webjars/bootstrap/css/bootstrap.min.css" rel="stylesheet">
|
||||
<script src="/webjars/jquery/jquery.min.js"></script>
|
||||
<script src="/webjars/sockjs-client/sockjs.min.js"></script>
|
||||
<script src="/webjars/stomp-websocket/stomp.min.js"></script>
|
||||
<script src="/ws.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="main-content" class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<form class="form-inline">
|
||||
<div class="form-group">
|
||||
<label for="name">Name: </label>
|
||||
<input type="text" id="name" class="form-control" placeholder="Please enter yout name">
|
||||
</div>
|
||||
<button id="send" class="btn btn-default" type="submit">Send</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<table id="conversation" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Greetings</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="greetings">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,26 @@
|
|||
var stompClient = null;
|
||||
|
||||
function connect() {
|
||||
stompClient = Stomp.client('ws://localhost:8080/ws');
|
||||
stompClient.connect({}, function (frame) {
|
||||
stompClient.subscribe('/topic/greetings', function (response) {
|
||||
showGreeting(JSON.parse(response.body).content);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function sendName() {
|
||||
stompClient.send("/app/hello", {}, JSON.stringify({'name': $("#name").val()}));
|
||||
}
|
||||
|
||||
function showGreeting(message) {
|
||||
$("#greetings").append("<tr><td>" + message + "</td></tr>");
|
||||
}
|
||||
|
||||
$(function () {
|
||||
connect();
|
||||
$("form").on('submit', function (e) {
|
||||
e.preventDefault();
|
||||
});
|
||||
$( "#send" ).click(function() { sendName(); });
|
||||
});
|
Loading…
Reference in New Issue