如何建立与Java Websocket服务器的连接(使用vert.x 3.2.1)?

Iga*_*Iga 5 java

我试图了解vert.x框架并创建webSocket服务器和客户端(使用Java)。在本教程中,我看到了一些小示例,但是我不了解处理程序和Websocket处理程序的工作方式,也不了解如何通过服务器和客户端之间的消息交换来组织会话。在http-server教程中有一个使用websocket的示例:

HttpServer server = Vertx.vertx().createHttpServer();
        server.websocketHandler(websocket -> {
            System.out.println("Connected!");
        }).listen(8080,"localhost");
Run Code Online (Sandbox Code Playgroud)

想法已编译ID,但看不到“已连接!” 在终端,不知道它是否有效。互联网上是否有任何有关此的指导性教程?

Iga*_*Iga 3

经过多次尝试,我已经使用 vert.x core 3.2.1 实现了服务器和客户端之间的 web-socket 连接。但我还有一些问题。服务器代码:

import io.vertx.core.Handler;
import io.vertx.core.Vertx;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.http.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class serverTest {

    public static void main(String[] args) throws Exception {
HttpServer server = Vertx.vertx().createHttpServer();
        server.websocketHandler(new Handler<ServerWebSocket>() {
            @Override
            public void handle(ServerWebSocket webs) {
                System.out.println("Client connected");
                webs.writeBinaryMessage(Buffer.buffer("Hello user"));
                System.out.println("Client's message: ");
                webs.handler(data -> {System.out.println("Received data " + data.toString("ISO-8859-1"));});

            }
        });

        server.listen(8080, "localhost", res -> {
            if (res.succeeded()) {
                System.out.println("Server is now listening!");
            } else {
                System.out.println("Failed to bind!");
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

客户端:

import io.vertx.core.Vertx;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.http.HttpClient;

public class clienTest {

    public static void main(String[] args) throws Exception{
 HttpClient client = Vertx.vertx().createHttpClient();

        client.websocket(8080, "localhost", "/some-uri", websocket ->
        {websocket.handler(data ->
        {
            System.out.println("Server message: ");
            System.out.println("Received data " + data.toString("ISO-8859-1"));});
            websocket.writeBinaryMessage(Buffer.buffer("Hello server"));
        });
   }
}
Run Code Online (Sandbox Code Playgroud)

我有一些问题,有人可以在这里解释一下吗?1 webs.handler(data -> {System.out.println("Received data " + data.toString("ISO-8859-1"));- 如何在不使用 lambda 表达式的情况下编写此代码?2 服务器和客户端只向对方写入 1 条消息。我应该如何执行可以互相写入许多消息的会话?(就像在聊天中一样)。我认为有必要使用读写线程。有谁知道如何在vert.x中实现它?