2016-09-19 108 views
0

在使用https://github.com/mrniko/netty-socketio我使用的是队列和线程池处理接收到的数据(约格式化计算器遗憾抱怨的空间,当我把在不同行的代码):是否可以延迟在netty的socket.io实现中发送确认?

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

回答

2

是有可能处理ACK手动发送。

  1. 您应该在配置中将确认模式切换到手动模式。

    config.setAckMode(AckMode.MANUAL)

  2. 发送ACK自己:

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