diff --git a/pom.xml b/pom.xml
index eb19adb..8f2d4de 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.boot
spring-boot-starter-parent
- 1.5.7.RELEASE
+ 1.5.10.RELEASE
com.charego
diff --git a/server/src/main/java/lingo/server/WebSocketConfig.java b/server/src/main/java/lingo/server/WebSocketConfig.java
index 701d7e3..5206b7c 100644
--- a/server/src/main/java/lingo/server/WebSocketConfig.java
+++ b/server/src/main/java/lingo/server/WebSocketConfig.java
@@ -3,6 +3,8 @@ package lingo.server;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.ChannelRegistration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
+import org.springframework.scheduling.TaskScheduler;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
@@ -25,7 +27,9 @@ public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
- registry.enableSimpleBroker("/topic");
+ registry.enableSimpleBroker("/topic")
+ .setTaskScheduler(heartbeatScheduler())
+ .setHeartbeatValue(heartbeatValue());
registry.setApplicationDestinationPrefixes("/app", "/user");
registry.setUserDestinationPrefix("/user");
}
@@ -36,4 +40,17 @@ public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
registry.addEndpoint("/stomp");
}
+ private TaskScheduler heartbeatScheduler() {
+ // Single thread unless/until more threads are needed
+ final ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
+ taskScheduler.setPoolSize(1);
+ taskScheduler.setThreadNamePrefix("Keep-Alive-");
+ taskScheduler.initialize();
+ return taskScheduler;
+ }
+
+ private long[] heartbeatValue() {
+ return new long[] { 25000, 25000 };
+ }
+
}
diff --git a/server/src/main/resources/static/client.js b/server/src/main/resources/static/client.js
index a762687..2c7a481 100644
--- a/server/src/main/resources/static/client.js
+++ b/server/src/main/resources/static/client.js
@@ -280,6 +280,8 @@ function main() {
}
client = Stomp.client(`${webSocketProtocol}://${location.host}/stomp`);
+ client.heartbeat.outgoing = 25000; // send PING every 25 seconds
+ client.heartbeat.incoming = 0; // do NOT want PONGs from server
client.connect({}, afterConnected, function(errorMessage) {
addChatAnnouncement(errorMessage);
addChatAnnouncement('Please reload the page!');
diff --git a/server/src/main/resources/static/index.html b/server/src/main/resources/static/index.html
index 46b4ca8..2dec598 100644
--- a/server/src/main/resources/static/index.html
+++ b/server/src/main/resources/static/index.html
@@ -5,7 +5,7 @@
Lingo
-
+