在网络上似乎很少有纯Java 11(非框架)的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);
}
}
Listener
的on
方法需要返回CompletionStage
吗?换句话说,这些阶段有什么作用? - pavel