是否可以在 netty 的 socket.io 实现中延迟发送 ack?

Is it possible to delay sending an ack in netty's socket.io implementation?

在使用 https://github.com/mrniko/netty-socketio 时,我正在使用队列和线程池来处理接收到的数据(很抱歉,当我将代码放在不同的行时,Whosebug 会抱怨格式问题):

server.addEventListener("NEW_SELL_ORDER", SellOrder.class, (client, data, ackSender) -> actionQueue.add((connection) -> this.onNewSellOrder(connection, client, data, ackSender)));

问题是 ackSender 不再可用,因为线程池正在稍后处理请求。

导致问题:是否可以在 netty 的 socket.io 实现中延迟发送 ack?

参见:https://github.com/mrniko/netty-socketio/blob/master/src/main/java/com/corundumstudio/socketio/AckRequest.java

是的,可以手动处理 ack 发送。

  1. 您应该在配置中将ack模式切换为手动。

    config.setAckMode(AckMode.MANUAL)

  2. 自己发ack:

    server.addEventListener("NEW_SELL_ORDER", SellOrder.class, (client, data, ackSender) ->  {
           if (ackRequest.isAckRequested()) {
                ackRequest.sendAckData(...);
           }
    });