Web 上似乎很少有 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);
}
}