下面列出了javax.websocket.Session#setMaxIdleTimeout ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public void update(Session session) {
session.setMaxIdleTimeout(getIdleTimeout() * 1000);
if (!idleTimerLogged) {
idleTimerLogged = true;
log.info("{} = {} seconds", IDLE_TIMEOUT, session.getMaxIdleTimeout() / 1000);
}
// adjust web socket buffer size
int originalTextSize = session.getMaxTextMessageBufferSize();
int originalBinarySize = session.getMaxBinaryMessageBufferSize();
if (originalTextSize != getTextSize()) {
session.setMaxTextMessageBufferSize(getTextSize());
if (!textSizeLogged) {
textSizeLogged = true;
log.warn("{} changed from {} to {}", TEXT_SIZE, originalTextSize, session.getMaxTextMessageBufferSize());
}
}
if (originalBinarySize != getBinarySize()) {
session.setMaxBinaryMessageBufferSize(getBinarySize());
if (!binarySizeLogged) {
binarySizeLogged = true;
log.warn("{} changed from {} to {}", BINARY_SIZE, originalBinarySize, session.getMaxBinaryMessageBufferSize());
}
}
}
@Test
@Ignore("UT3 - P4")
public void testClientSideIdleTimeout() throws Exception {
//make a sub class
CountDownLatch latch = new CountDownLatch(1);
CloseCountdownEndpoint c = new CloseCountdownEndpoint(latch);
Session session = deployment.connectToServer(c, new URI("ws://" + DefaultServer.getHostAddress("default") + ":" + DefaultServer.getHostPort("default") + "/ws/chat/Bob"));
session.setMaxIdleTimeout(100);
Assert.assertTrue(latch.await(2000, TimeUnit.MILLISECONDS));
Assert.assertFalse(session.isOpen());
}
@OnOpen
public void open(Session session) {
System.out.println("open.");
session.setMaxIdleTimeout(2 * TimeUnit.MILLISECONDS.convert(RCSharedConstants.MAX_ROUND_LENGTH_IN_NANOS, TimeUnit.NANOSECONDS));
// Convert the session to a 'managed resource', so that it will automatically be disposed of once it expires.
ResourceLifecycleUtil.getInstance().addNewSession(ServerWsClientUtil.convertSessionToManagedResource(session));
}
@OnOpen
public void onOpen(@PathParam("roundId") String roundId, Session session) {
log(roundId, "Opened a session");
session.setMaxTextMessageBufferSize(1000);
session.setMaxBinaryMessageBufferSize(1000);
session.setMaxIdleTimeout(90 * 1000);
timerContext = GameMetrics.timerStart(GameMetrics.openWebsocketTimerMetadata);
}
@OnOpen
public void onOpen(Session session) {
String combinedEndpointId = getOrGenerateCombinedEndpointId(session);
LOG.debug("Web socket session opened");
LOG.debug("Endpoint: {}", combinedEndpointId);
session.setMaxIdleTimeout(0);
registry.add(combinedEndpointId, session);
reSender.resend(combinedEndpointId);
sessionMessagesBuffer.put(session, new StringBuffer());
}
@Test
public void testSessionExpirySession() throws Exception {
Tomcat tomcat = getTomcatInstance();
// No file system docBase required
Context ctx = tomcat.addContext("", null);
ctx.addApplicationListener(TesterEchoServer.Config.class.getName());
Tomcat.addServlet(ctx, "default", new DefaultServlet());
ctx.addServletMappingDecoded("/", "default");
tomcat.start();
// Need access to implementation methods for configuring unit tests
WsWebSocketContainer wsContainer = (WsWebSocketContainer)
ContainerProvider.getWebSocketContainer();
// 5 second timeout
wsContainer.setDefaultMaxSessionIdleTimeout(5000);
wsContainer.setProcessPeriod(1);
EndpointA endpointA = new EndpointA();
Session s1a = connectToEchoServer(wsContainer, endpointA,
TesterEchoServer.Config.PATH_BASIC);
s1a.setMaxIdleTimeout(3000);
Session s2a = connectToEchoServer(wsContainer, endpointA,
TesterEchoServer.Config.PATH_BASIC);
s2a.setMaxIdleTimeout(6000);
Session s3a = connectToEchoServer(wsContainer, endpointA,
TesterEchoServer.Config.PATH_BASIC);
s3a.setMaxIdleTimeout(9000);
// Check all three sessions are open
Set<Session> setA = s3a.getOpenSessions();
int expected = 3;
while (expected > 0) {
Assert.assertEquals(expected, getOpenCount(setA));
int count = 0;
while (getOpenCount(setA) == expected && count < 50) {
count ++;
Thread.sleep(100);
}
expected--;
}
Assert.assertEquals(0, getOpenCount(setA));
}
@OnOpen
public void open(Session session) {
session.setMaxIdleTimeout(100);
}
@Test
public void testSessionExpirySession() throws Exception {
Tomcat tomcat = getTomcatInstance();
// No file system docBase required
Context ctx = tomcat.addContext("", null);
ctx.addApplicationListener(TesterEchoServer.Config.class.getName());
Tomcat.addServlet(ctx, "default", new DefaultServlet());
ctx.addServletMapping("/", "default");
tomcat.start();
// Need access to implementation methods for configuring unit tests
WsWebSocketContainer wsContainer = (WsWebSocketContainer)
ContainerProvider.getWebSocketContainer();
// 5 second timeout
wsContainer.setDefaultMaxSessionIdleTimeout(5000);
wsContainer.setProcessPeriod(1);
EndpointA endpointA = new EndpointA();
Session s1a = connectToEchoServer(wsContainer, endpointA,
TesterEchoServer.Config.PATH_BASIC);
s1a.setMaxIdleTimeout(3000);
Session s2a = connectToEchoServer(wsContainer, endpointA,
TesterEchoServer.Config.PATH_BASIC);
s2a.setMaxIdleTimeout(6000);
Session s3a = connectToEchoServer(wsContainer, endpointA,
TesterEchoServer.Config.PATH_BASIC);
s3a.setMaxIdleTimeout(9000);
// Check all three sessions are open
Set<Session> setA = s3a.getOpenSessions();
int expected = 3;
while (expected > 0) {
Assert.assertEquals(expected, getOpenCount(setA));
int count = 0;
while (getOpenCount(setA) == expected && count < 5) {
count ++;
Thread.sleep(1000);
}
expected--;
}
Assert.assertEquals(0, getOpenCount(setA));
}
@OnOpen
public void open(Session session) {
System.out.println("open.");
session.setMaxIdleTimeout(2 * TimeUnit.MILLISECONDS.convert(RCSharedConstants.MAX_ROUND_LENGTH_IN_NANOS, TimeUnit.NANOSECONDS));
ResourceLifecycleUtil.getInstance().addNewSession(ServerWsClientUtil.convertSessionToManagedResource(session));
}
@Test
public void testSessionExpirySession() throws Exception {
Tomcat tomcat = getTomcatInstance();
// No file system docBase required
Context ctx = tomcat.addContext("", null);
ctx.addApplicationListener(TesterEchoServer.Config.class.getName());
Tomcat.addServlet(ctx, "default", new DefaultServlet());
ctx.addServletMapping("/", "default");
tomcat.start();
// Need access to implementation methods for configuring unit tests
WsWebSocketContainer wsContainer = (WsWebSocketContainer)
ContainerProvider.getWebSocketContainer();
// 5 second timeout
wsContainer.setDefaultMaxSessionIdleTimeout(5000);
wsContainer.setProcessPeriod(1);
EndpointA endpointA = new EndpointA();
Session s1a = connectToEchoServer(wsContainer, endpointA,
TesterEchoServer.Config.PATH_BASIC);
s1a.setMaxIdleTimeout(3000);
Session s2a = connectToEchoServer(wsContainer, endpointA,
TesterEchoServer.Config.PATH_BASIC);
s2a.setMaxIdleTimeout(6000);
Session s3a = connectToEchoServer(wsContainer, endpointA,
TesterEchoServer.Config.PATH_BASIC);
s3a.setMaxIdleTimeout(9000);
// Check all three sessions are open
Set<Session> setA = s3a.getOpenSessions();
int expected = 3;
while (expected > 0) {
Assert.assertEquals(expected, getOpenCount(setA));
int count = 0;
while (getOpenCount(setA) == expected && count < 50) {
count ++;
Thread.sleep(100);
}
expected--;
}
Assert.assertEquals(0, getOpenCount(setA));
}
public void onWebSocketConnect(Session webSocketSession) {
this.webSocketSession = webSocketSession;
webSocketSession.setMaxIdleTimeout(60 * 60 * 1000);
}