首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java创建SockJS服务器

用Java创建SockJS服务器
EN

Stack Overflow用户
提问于 2013-10-06 11:57:04
回答 1查看 3.6K关注 0票数 3

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

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

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

代码语言:javascript
复制
@OnOpen 
public void onOpen(Session userSession) {    
   // Do whatever you need 
}

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

使用Spring Framework4.0 M1+中的SockJS支持,它几乎与JSR356相同:

代码语言:javascript
复制
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

提亚

EN

回答 1

Stack Overflow用户

发布于 2013-10-08 05:44:41

这就是答案:

代码语言:javascript
复制
  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);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19205257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档