package com.csc.test; import java.io.IOException; import java.net.URISyntaxException; import java.nio.ByteBuffer; import java.util.concurrent.atomic.AtomicInteger; import javax.websocket.DeploymentException; import javax.websocket.EndpointConfig; import javax.websocket.MessageHandler; import javax.websocket.PongMessage; import javax.websocket.Session; public class TestPingEndpoint extends EndpointBase{ private String TAGNAME = ""; private Session session; private static AtomicInteger counter = new AtomicInteger(); public static void main(String[] arg) throws DeploymentException, IOException, URISyntaxException{ for(int i = 0; i<500; i++){ Thread t = new Thread(new Runnable() { @Override public void run() { try { new TestPingEndpoint().process(); } catch (DeploymentException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (URISyntaxException e) { e.printStackTrace(); } } }); t.start(); } } public TestPingEndpoint() throws DeploymentException, IOException, URISyntaxException{ this.TAGNAME = Thread.currentThread().getName(); ClientEndpointFactory.getInstance().connect(this); } public void process() throws DeploymentException, IOException, URISyntaxException{ while(true){ try{ // println("ping"); session.getBasicRemote().sendPing(ByteBuffer.wrap(String.valueOf(System.currentTimeMillis()).getBytes())); Thread.sleep(3000); }catch(Exception e){ e.printStackTrace(); } } } @Override public void onOpen(Session session, EndpointConfig config) { println("session.open"); this.session = session; session.addMessageHandler(new MessageHandler.Whole<PongMessage>() { @Override public void onMessage(PongMessage message) { try{ println("pong : " + counter.incrementAndGet()); String s = new String(message.getApplicationData().array()); System.out.println("Latency : "+(System.currentTimeMillis()-Long.valueOf(s))); }catch(Exception e){ e.printStackTrace(); } } }); } public void println(String message){ System.out.println(TAGNAME + " : " + message); } @Override public String getURL() { return String.format(WebsocketConfig.URIPATH_PATTERN, this.TAGNAME , System.currentTimeMillis()); } }