Создание сервера SockJS с Java

Я очень новичок в Vert.x, так что извините мою новизну.

Мне удалось создать очень простой сервер SockJS с Vert.x, однако я не могу понять, как регистрировать события/обратные вызовы/обработчики, когда соединения открыты или закрыты.

С JSR-356 очень просто обрабатывать события открытия/закрытия соединения:

@OnOpen 
public void onOpen(Session userSession) {    
   // Do whatever you need 
}

@OnClose
public void onClose(Session userSession) {    
   // Do whatever you need
}

Используя поддержку SockJS в Spring Framework 4.0 M1+, это почти то же самое, что и JSR-356:

public class MySockJsServer extends TextWebSocketHandlerAdapter {   
   @Override    
   public void afterConnectionEstablished(WebSocketSession session) throws Exception {
      // Do whatever you need
   }

   @Override    
   public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
      // Do whatever you need    
   } 
}

По какой-то причине я не мог понять, как сделать что-то настолько концептуально простое в Vert.x. Я хоть Vert.x был прост?!!

Если кто-нибудь может указать мне в правильном направлении, пожалуйста, помогите.

Я играл с хуками EventBus и EventBus, но это не сработало. Возможно, это все-таки неправильный подход.

Я использую Vert.x версии 2.0.1.

ТИА


person Steven McCarthy    schedule 06.10.2013    source источник
comment
Это ответ: sockJSServer = sockJSServer.installApp(new JsonObject().putString(prefix, /test), new Handler‹SockJSSocket›() { public void handle(final SockJSSocket sock) { System.out.println(обнаружен новый сеанс !); // Обработчик завершения сеанса sock.endHandler(new Handler‹Void›() { @Override public void handle(Void arg) { System.out.println(In endHandler); } }); } }); httpServer.listen(8080);   -  person Steven McCarthy    schedule 08.10.2013


Ответы (1)


Это ответ:

  HttpServer httpServer = vertx.createHttpServer();

  // Create HTTP server
  httpServer = httpServer.requestHandler(new Handler<HttpServerRequest>() {
     @Override
     public void handle(HttpServerRequest req) {
        req.response().sendFile("web/" + req.path());
     }
  });

  // Create SockJS Server
  SockJSServer sockJSServer = vertx.createSockJSServer(httpServer);

  sockJSServer = sockJSServer.installApp(new JsonObject().putString("prefix", "/test"), new Handler<SockJSSocket>() {

     public void handle(final SockJSSocket sock) {
        System.out.println("New session detected!");

        // Message handler
        sock.dataHandler(new Handler<Buffer>() {
           public void handle(Buffer buffer) {
              System.out.println("In dataHandler");
           }
        });

        // Session end handler
        sock.endHandler(new Handler<Void>() {
           @Override
           public void handle(Void arg) {
              System.out.println("In endHandler");
           }
        });
     }
  });

  httpServer.listen(8080);
person Steven McCarthy    schedule 07.10.2013