2016-03-30 52 views
3

我想了解vert.x框架并创建webSocket服务器和客户端(使用Java)。在this tutorial中,我看到了一些小例子,但我不明白处理程序和websocket处理程序是如何工作的。我也不知道如何组织服务器和客户端之间的消息更改。在http服务器教程中有这样的例子,它使用websocket:如何建立与Java websocket服务器的连接(使用vert.x 3.2.1)?

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

想法编译的id,但我没有看到“连接!”在终端,不知道它是否工作。互联网上有关于它的任何信息性教程吗?

+0

您发布的代码创建了一个服务器,而不是客户端。不清楚你在问什么。 – EJP

+0

我不明白websocketHandler()如何工作。我也不明白如何执行与客户端的消息交换 – Iga

+0

这不是它在你的问题中所说的,它是关于建立连接,这是一个客户端操作。请澄清。 – EJP

回答

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!"); 
      } 
     }); 
    } 
} 

客户端:

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中实现它吗?

相关问题