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

标签 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. 您应该在配置中将确认模式切换为手动。

    config.setAckMode(AckMode.MANUAL)

  2. 自己发送ack:

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

关于java - 在netty的socket.io实现中是否可以延迟发送ack?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39573745/

相关文章:

java - 为什么netty只使用一个线程?

Java : ClassNotFoundException when running program with netty [Gradle]

Java扫描整数后的字符

java - 在 Java 中使异步 Web 服务调用成为同步调用

java - 无法从spring项目连接到mysql数据库

javascript - react native 和 socket.io Node 不起作用

javascript - Unity3d和Sockets.IO不会握手

http - Netty 4.x客户端文件上传

java - 动态创建多个功能区客户端

laravel-echo-server 用户未加入,未订阅套接字服务器