Use SockJs clients

This commit is contained in:
Charles Gould 2017-01-02 18:28:58 -05:00
parent cfea7f287e
commit 3c2e7e6580
5 changed files with 22 additions and 22 deletions

View File

@ -1,7 +1,7 @@
# http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html # http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
server: # Development
host: localhost #web.socket.url: ws://localhost:8080/stomp
port: 8080
stomp: # Production
endpoint: stomp web.socket.url: ws://lingo.charego.com/stomp

View File

@ -14,13 +14,24 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.web.socket.client.WebSocketClient; import org.springframework.web.socket.client.WebSocketClient;
import org.springframework.web.socket.client.standard.StandardWebSocketClient; import org.springframework.web.socket.client.standard.StandardWebSocketClient;
import org.springframework.web.socket.messaging.WebSocketStompClient; 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 @Configuration
public class MultiplayerConfig { public class MultiplayerConfig {
@Bean @Bean
public WebSocketStompClient stompClient(MessageConverter messageConverter) { public WebSocketClient webSocketClient() {
WebSocketClient webSocketClient = new StandardWebSocketClient(); WebSocketClient webSocketClient = new StandardWebSocketClient();
List<Transport> 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); WebSocketStompClient stompClient = new WebSocketStompClient(webSocketClient);
stompClient.setMessageConverter(messageConverter); stompClient.setMessageConverter(messageConverter);
stompClient.setTaskScheduler(new ThreadPoolTaskScheduler()); stompClient.setTaskScheduler(new ThreadPoolTaskScheduler());

View File

@ -25,14 +25,8 @@ public class StompTemplate {
private static final Logger log = LoggerFactory.getLogger(StompTemplate.class); private static final Logger log = LoggerFactory.getLogger(StompTemplate.class);
@Value("${server.host}") @Value("${web.socket.url}")
private String host; private String webSocketUrl;
@Value("${server.port}")
private int port;
@Value("${server.stomp.endpoint}")
private String stompEndpoint;
@Autowired @Autowired
private ExecutorService executorService; private ExecutorService executorService;
@ -54,8 +48,7 @@ public class StompTemplate {
@PostConstruct @PostConstruct
private void postConstruct() { private void postConstruct() {
final String url = String.format("ws://%s:%d/%s", host, port, stompEndpoint); executorService.execute(() -> stompClient.connect(webSocketUrl, new WebSocketSessionHandler()));
executorService.execute(() -> stompClient.connect(url, new WebSocketSessionHandler()));
new Thread(new WebSocketSessionListener()).start(); new Thread(new WebSocketSessionListener()).start();
} }

View File

@ -18,10 +18,7 @@ public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override @Override
public void registerStompEndpoints(StompEndpointRegistry registry) { public void registerStompEndpoints(StompEndpointRegistry registry) {
// For JavaFX client registry.addEndpoint("/stomp").withSockJS();
registry.addEndpoint("/stomp");
// For JavaScript client
registry.addEndpoint("/sockjs").withSockJS();
} }
} }

View File

@ -31,10 +31,9 @@ function main() {
reset(); reset();
repaint(); repaint();
client = Stomp.over(new SockJS('/sockjs')); client = Stomp.over(new SockJS('/stomp'));
client.connect({}, function(frame) { client.connect({}, function(frame) {
console.log('Connected: ' + frame);
subscribeToOpponentJoined(); subscribeToOpponentJoined();
subscribeToOpponentLeft(); subscribeToOpponentLeft();
subscribeToOpponentReports(); subscribeToOpponentReports();