【发布时间】:2019-08-18 05:35:54
【问题描述】:
网络上似乎很少有 Java 11(纯 Java 非基于框架的)WebSocket 客户端代码示例,所以我希望 StackOverflow 可以再次为我提供帮助。
This 是我找到的最接近的,但不幸的是,在我的(新手)眼中,它似乎不是展示如何使用来自 WebSocket 侦听器的数据的完整解决方案。
查看WebSocket.Listener implementation, the 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);
}
}
【问题讨论】:
-
不是很担心(因为我只是想要一些帮助),但如果你要投反对票,如果你至少能说出哪里出了问题,那就太好了。
-
你知道为什么
CompletionStage需要从on返回-Listener的方法吗?换句话说,这些阶段的作用是什么?
标签: websocket java-11 java-http-client