gpt4 book ai didi

websocket - Vertx SocketJS 在服务器繁忙几秒钟后断开连接

转载 作者:行者123 更新时间:2023-12-02 23:09:02 25 4
gpt4 key购买 nike

需要一些帮助来了解断开连接发生的位置(SocketJS、Vertx)以及如何配置超时。

我正在创建SockJSServer以及创建eventBus桥。我观察到的问题是WebSocket连接频繁断开。查看 websocket 帧,我每 5 秒看到一次 ping,每 1/2 秒看到我配置的心跳(似乎生效)。然而,一旦心跳延迟时间超过 5 秒,就会出现消息c[3000,'走开']。据观察,它发生在服务器繁忙时(在单独的线程上执行其他操作)。

我搜索了 Vertx 文档并查看了 vertx 代码,发现了一些配置参数(不同版本和文档似乎有所不同)。

.putNumber("ping_interval", 120000)
.putNumber("session_timeout", 1200000)
.putNumber("heartbeat_period",500)

可以肯定的是,我尝试了不同的配置,但似乎没有任何影响。此时,我想我已经走到了死胡同,需要一些帮助。

Vertx版本2.1P3

服务器片段

final SockJSServer server = vertx.createSockJSServer(httpServer);
server.bridge(new JsonObject().putString("prefix", "/eventbus")
.putNumber("ping_interval", 120000)
.putNumber("session_timeout", 1200000)
.putNumber("heartbeat_period",500),
new JsonArray().addObject(new JsonObject()),
new JsonArray().addObject(new JsonObject()));

客户端代码:

var eventBus = new EventBus('//hostX:12001/eventbus');

最佳答案

当您收到 SOCKET_IDLE 事件时,您无法使用“true”参数完成该事件,因为它指示必须关闭套接字:


SockJSHandler.create(vertx,handlerOptions).bridge(选项, 事件 -> {
bool 结果 = true;
开关(事件类型()){
案例 SOCKET_CREATED:
LOGGER.info("套接字已创建");
休息;
情况SOCKET_IDLE:
结果=假;
返回;
案例 SOCKET_CLOSED:
LOGGER.info("套接字已关闭");
休息;
}
事件.完成(结果);
});

关于websocket - Vertx SocketJS 在服务器繁忙几秒钟后断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28468841/

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