Java 如何在vert-x中处理StompServerHandler
我使用的是vert-X3.5.0,我想使用StompServer作为WebSocket服务器 我的java代码如下:Java 如何在vert-x中处理StompServerHandler,java,websocket,vert.x,stomp,Java,Websocket,Vert.x,Stomp,我使用的是vert-X3.5.0,我想使用StompServer作为WebSocket服务器 我的java代码如下: import io.vertx.core.AbstractVerticle; import io.vertx.core.http.HttpServerOptions; import io.vertx.core.logging.Logger; import io.vertx.core.logging.LoggerFactory; import io.vertx.ext.stomp.
import io.vertx.core.AbstractVerticle;
import io.vertx.core.http.HttpServerOptions;
import io.vertx.core.logging.Logger;
import io.vertx.core.logging.LoggerFactory;
import io.vertx.ext.stomp.StompServer;
import io.vertx.ext.stomp.StompServerHandler;
import io.vertx.ext.stomp.StompServerOptions;
StompServer server = StompServer.create(vertx, new StompServerOptions()
.setPort(-1)
.setWebsocketBridge(true)
.setWebsocketPath("/stomp"))
.handler(StompServerHandler.create(vertx)
.receivedFrameHandler(event -> {
LOG.info(String.format("frame is %s", event.frame().getBodyAsString()));
})
.beginHandler(event -> {
LOG.info("Begin event");
})
.connectHandler(event -> {
LOG.info("Connect event");
})
.subscribeHandler(event -> {
LOG.info("Subscribe event");
}));
vertx.createHttpServer(
new HttpServerOptions().setWebsocketSubProtocols("v10.stomp, v11.stomp, v13.stomp")
)
.websocketHandler(server.webSocketHandler())
.listen(8080);
服务器正在运行,可以接收握手请求和消息。我从websocket客户端和扩展服务器日志中看到了它
Server received request: /stomp
[id: 0x1f899ae3, L:/127.0.0.1:8080 - R:/127.0.0.1:42550] WebSocket version V13 server handshake
WebSocket version 13 server handshake key: Qe8G85Aw1PwuQbWKPyJSrg==, response: VQVnKr2Jp8RuK/vltKb7XqBiMTU=
Decoding WebSocket Frame opCode=1
Decoding WebSocket Frame length=7
但是声明的处理程序receivedFrameHandler、beginHandler、connectHandler、subscribeHandler不工作。如何处理它们?您正在配置WebSocket Stomp桥,该桥允许使用web套接字的客户端与Stomp服务器交互。但是,此客户机必须发送STOMP帧,并且需要STOMP帧 通常: 当STOMP客户端连接到服务器时,将调用connectEvent 启动STOMP事务时调用beginEvent 如果您的web套接字客户端未发送帧CONNECT,BEGIN…,则不会调用回调
您可以看到连接框架的示例 看来我明白你在说什么。我不能通过websocket将普通websocket客户端用于STOMP服务器。或者我可以使用,但我必须通过websocket协议发送特定的STOMP帧?服务器对简单的WebSocket帧做一些反应并不重要,确切地说,Stomp服务器期望的是Stomp帧,不管传输协议是TCP(默认的)还是WebSocket。