经过多次尝试,我已经实现了使用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!");
}
});
}
}
客户端:
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"));
});
}
}
我有一些问题,可能有人在这里解释一下我的一些时刻? - 如何在不使用lambda表达式的情况下编写此代码? 2服务器和客户端向对方写入1条消息。我应该如何执行会话,以便可以向对方写入许多消息(如在聊天中)。我认为使用写读线程是必需的。有人知道如何在vert.x中实现它吗?
来源
2016-04-01 10:17:51
Iga
您发布的代码创建了一个服务器,而不是客户端。不清楚你在问什么。 – EJP
我不明白websocketHandler()如何工作。我也不明白如何执行与客户端的消息交换 – Iga
这不是它在你的问题中所说的,它是关于建立连接,这是一个客户端操作。请澄清。 – EJP