【问题标题】:Creating SockJS server with Java用 Java 创建 SockJS 服务器
【发布时间】:2013-10-06 03:57:04
【问题描述】:

我是 Vert.x 的新手,所以请原谅我的新手。

我能够使用 Vert.x 创建一个非常简单的 SockJS 服务器,但是我不知道如何在打开或关闭连接时注册事件/回调/处理程序。

使用 JSR-356,处理打开/关闭连接事件变得非常简单:

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

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

使用 Spring Framework 4.0 M1+ 中的 SockJS 支持,几乎与 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

TIA

【问题讨论】:

  • 这是答案:sockJSServer = sockJSServer.installApp(new JsonObject().putString("prefix", "/test"), new Handler() { public void handle(final SockJSSocket sock) { System.out.println("检测到新会话!"); // 会话结束处理程序 sock.endHandler(new Handler() { @Override public void handle(Void arg) { System.out.println( "在 endHandler"); } }); } }); httpServer.listen(8080);

标签: java sockjs vert.x


【解决方案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);

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 2019-12-31
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多