From 3c2e7e6580302e317e73f3d85e5babd0308a460f Mon Sep 17 00:00:00 2001 From: Charles Gould Date: Mon, 2 Jan 2017 18:28:58 -0500 Subject: [PATCH] Use SockJs clients --- client/src/main/config/application.yaml | 10 +++++----- .../lingo/client/multiplayer/MultiplayerConfig.java | 13 ++++++++++++- .../lingo/client/multiplayer/StompTemplate.java | 13 +++---------- .../src/main/java/lingo/server/WebSocketConfig.java | 5 +---- server/src/main/resources/static/client.js | 3 +-- 5 files changed, 22 insertions(+), 22 deletions(-) diff --git a/client/src/main/config/application.yaml b/client/src/main/config/application.yaml index eeb2579..977deab 100644 --- a/client/src/main/config/application.yaml +++ b/client/src/main/config/application.yaml @@ -1,7 +1,7 @@ # http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html -server: - host: localhost - port: 8080 - stomp: - endpoint: stomp +# Development +#web.socket.url: ws://localhost:8080/stomp + +# Production +web.socket.url: ws://lingo.charego.com/stomp diff --git a/client/src/main/java/lingo/client/multiplayer/MultiplayerConfig.java b/client/src/main/java/lingo/client/multiplayer/MultiplayerConfig.java index aadf93b..c2fec0b 100644 --- a/client/src/main/java/lingo/client/multiplayer/MultiplayerConfig.java +++ b/client/src/main/java/lingo/client/multiplayer/MultiplayerConfig.java @@ -14,13 +14,24 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import org.springframework.web.socket.client.WebSocketClient; import org.springframework.web.socket.client.standard.StandardWebSocketClient; import org.springframework.web.socket.messaging.WebSocketStompClient; +import org.springframework.web.socket.sockjs.client.SockJsClient; +import org.springframework.web.socket.sockjs.client.Transport; +import org.springframework.web.socket.sockjs.client.WebSocketTransport; @Configuration public class MultiplayerConfig { @Bean - public WebSocketStompClient stompClient(MessageConverter messageConverter) { + public WebSocketClient webSocketClient() { WebSocketClient webSocketClient = new StandardWebSocketClient(); + List transports = new ArrayList<>(); + transports.add(new WebSocketTransport(webSocketClient)); + SockJsClient sockJsClient = new SockJsClient(transports); + return sockJsClient; + } + + @Bean + public WebSocketStompClient stompClient(WebSocketClient webSocketClient, MessageConverter messageConverter) { WebSocketStompClient stompClient = new WebSocketStompClient(webSocketClient); stompClient.setMessageConverter(messageConverter); stompClient.setTaskScheduler(new ThreadPoolTaskScheduler()); diff --git a/client/src/main/java/lingo/client/multiplayer/StompTemplate.java b/client/src/main/java/lingo/client/multiplayer/StompTemplate.java index b5c0faf..d8d74c4 100644 --- a/client/src/main/java/lingo/client/multiplayer/StompTemplate.java +++ b/client/src/main/java/lingo/client/multiplayer/StompTemplate.java @@ -25,14 +25,8 @@ public class StompTemplate { private static final Logger log = LoggerFactory.getLogger(StompTemplate.class); - @Value("${server.host}") - private String host; - - @Value("${server.port}") - private int port; - - @Value("${server.stomp.endpoint}") - private String stompEndpoint; + @Value("${web.socket.url}") + private String webSocketUrl; @Autowired private ExecutorService executorService; @@ -54,8 +48,7 @@ public class StompTemplate { @PostConstruct private void postConstruct() { - final String url = String.format("ws://%s:%d/%s", host, port, stompEndpoint); - executorService.execute(() -> stompClient.connect(url, new WebSocketSessionHandler())); + executorService.execute(() -> stompClient.connect(webSocketUrl, new WebSocketSessionHandler())); new Thread(new WebSocketSessionListener()).start(); } diff --git a/server/src/main/java/lingo/server/WebSocketConfig.java b/server/src/main/java/lingo/server/WebSocketConfig.java index ba9e030..b048fe3 100644 --- a/server/src/main/java/lingo/server/WebSocketConfig.java +++ b/server/src/main/java/lingo/server/WebSocketConfig.java @@ -18,10 +18,7 @@ public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { @Override public void registerStompEndpoints(StompEndpointRegistry registry) { - // For JavaFX client - registry.addEndpoint("/stomp"); - // For JavaScript client - registry.addEndpoint("/sockjs").withSockJS(); + registry.addEndpoint("/stomp").withSockJS(); } } diff --git a/server/src/main/resources/static/client.js b/server/src/main/resources/static/client.js index 58e8727..711c7ac 100644 --- a/server/src/main/resources/static/client.js +++ b/server/src/main/resources/static/client.js @@ -31,10 +31,9 @@ function main() { reset(); repaint(); - client = Stomp.over(new SockJS('/sockjs')); + client = Stomp.over(new SockJS('/stomp')); client.connect({}, function(frame) { - console.log('Connected: ' + frame); subscribeToOpponentJoined(); subscribeToOpponentLeft(); subscribeToOpponentReports();