使用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?
答案 0 :(得分:2)
是的,可以手动处理确认。
您应该在配置中将ack模式切换为手动。
config.setAckMode(AckMode.MANUAL)
自己发送确认:
server.addEventListener("NEW_SELL_ORDER", SellOrder.class, (client, data, ackSender) -> {
if (ackRequest.isAckRequested()) {
ackRequest.sendAckData(...);
}
});