【问题标题】:Is it possible to delay sending an ack in netty's socket.io implementation?是否可以在 netty 的 socket.io 实现中延迟发送 ack?
【发布时间】:2016-09-19 12:54:27
【问题描述】:

在使用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

【问题讨论】:

    标签: java socket.io netty


    【解决方案1】:

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

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

      config.setAckMode(AckMode.MANUAL)

    2. 自己发送确认:

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

    【讨论】:

    • 如何发送自动确认? config.setAckMode(AckMode.AUTO);还不够。
    猜你喜欢
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    相关资源
    最近更新 更多