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
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

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.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<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);
stompClient.setMessageConverter(messageConverter);
stompClient.setTaskScheduler(new ThreadPoolTaskScheduler());

View File

@ -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();
}

View File

@ -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();
}
}

View File

@ -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();