gpt4 book ai didi

java - 使用 Java 创建 SockJS 服务器

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:49 25 4
gpt4 key购买 nike

我是 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 钩子(Hook),但没有用。也许无论如何这是错误的方法。

我使用的是 Vert.x 2.0.1 版

TIA

最佳答案

这是答案:

  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);

关于java - 使用 Java 创建 SockJS 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19205257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com