Похоже, очень мало Java 11 (чисто Java, не основанного на фреймворке) WebSocket клиент примеров кода в Интернете, поэтому я надеюсь, что StackOverflow снова мне поможет.
Это - самое близкое, что я нашел, но, к сожалению, для моих (начинающих) глаз, оно не является полным решением, показывающим, как использовать данные из прослушивателя WebSocket.
Рассматривая реализацию WebSocket.Listener, метод обратного вызова onText , который я предполагаю, предоставит то, что мне нужно, но я пытаюсь выяснить, как вернуть объект CompletionStage и какую-то строкуданные из сокета.
Это тестовый код, который у меня есть.
Буду признателен за помощь.Спасибо
public class Main {
public static void main(String[] args) {
WebSocketClient wsc = new WebSocketClient();
wsc.startSocket("ws://demos.kaazing.com/echo");
int i = 0;
// Bad, very bad
do {} while (i == 0);
}
}
public class WebSocketClient implements WebSocket.Listener {
@Override
public void onOpen(WebSocket webSocket) {
//...
System.out.println("Go...Open".concat(
webSocket.getSubprotocol()));
}
@Override
public CompletionStage<?> onText(WebSocket webSocket, CharSequence data, boolean last) {
//...
System.out.println(data.toString());
// How do I return the CompletionStage object
// return CompletionStage<String>
}
@Override
public void onError(WebSocket webSocket, Throwable error) {
//..
System.out.println("Bad day! ".concat(webSocket.toString()));
}
void startSocket(String connection) {
CompletableFuture<WebSocket> server_cf = HttpClient.
newHttpClient().
newWebSocketBuilder().
buildAsync(URI.create(connection),
new WebSocketClient());
WebSocket server = server_cf.join();
server.sendText("Hello!", true);
}
}