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

时间:2016-09-19 12:54:28

标签: java socket.io netty

使用https://github.com/mrniko/netty-socketio时我使用队列和线程池来处理收到的数据(抱歉格式化stackoverflow在我将代码放在不同行时抱怨空格):

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

1 个答案:

答案 0 :(得分:2)

是的,可以手动处理确认。

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

    config.setAckMode(AckMode.MANUAL)

  2. 自己发送确认:

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