import org.eclipse.jetty.util.ssl.SslContextFactory; //导入方法依赖的package包/类
public void connectWebsocket(String url, int sampleEveryN, boolean showMessages) {
try {
int timeout = 9000; // 9 seconds
System.out.println("NOTE: For GeoEvent Stream Service append /subscribe to the Web Socket URL");
System.out.println("Starting: If you see rapid connection lost messages. Ctrl-C and check you're URL");
SslContextFactory sslContextFactory = new SslContextFactory();
sslContextFactory.setTrustAll(true);
sslContextFactory.start();
final WebSocketClientFactory factory = new WebSocketClientFactory();
factory.start();
WebSocketClient client = factory.newWebSocketClient();
URI uri = new URI(url);
//WebSocketMessage msg = new WebSocketMessage();
//WebSocket.Connection websocketConnection = client.open(uri, new WebSocketMessage(sampleEveryN, showMessages)).get(5, TimeUnit.SECONDS);
WebSocket.Connection websocketConnection = client.open(uri, new WebSocketMessage(sampleEveryN, showMessages),timeout, TimeUnit.SECONDS);
//System.out.println(System.currentTimeMillis());
websocketConnection.setMaxTextMessageSize(MAX_MESSAGE_SIZE);
//System.out.println(timeout);
websocketConnection.setMaxIdleTime(timeout);
//websocketConnection.setMaxIdleTime(-1);
while (true) {
if (websocketConnection.isOpen()) {
// Wait a second
Thread.sleep(1000);
} else {
// Reopen
websocketConnection = client.open(uri, new WebSocketMessage(sampleEveryN, showMessages)).get(5, TimeUnit.SECONDS);
websocketConnection.setMaxTextMessageSize(MAX_MESSAGE_SIZE);
websocketConnection.setMaxIdleTime(timeout);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}