我是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 Framework4.0 M1+中的SockJS支持,它几乎与JSR356相同:
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
提亚
发布于 2013-10-08 05:44:41
这就是答案:
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);https://stackoverflow.com/questions/19205257
复制相似问题