java - Netty 中用于服务器端计划任务/事件的最佳方法

标签 java netty tcp

我正在尝试在 Netty 4.0 中实现一个服务器应用程序,它通过 TCP/IP 套接字与客户端通信。 建立连接后,客户端将建立初始连接。 服务器将每隔 X 分钟向客户端发送一次 ping 消息,每个客户端的 X 可以不同。 一旦客户端成功获得“ping”,客户端将尝试上传/传输文件到服务器。 服务器接收文件,并将其写入磁盘。

我想知道在 Netty 中执行此操作的最佳方法是什么,主要是调度部分(在 cron 基础上发送 ping 消息并接收文件)

我在网上查了一下,发现有一个及时连接到服务器的 Uptime ClientHandler 示例,但那是一个客户端,它也在 ClientBootstrap 中使用了一些方法 ( https://github.com/netty/netty/blob/master/example/src/main/java/io/netty/example/uptime/UptimeClientHandler.java#L78 )

我还找到了一个 http://netty.io/4.0/api/io/netty/util/HashedWheelTimer.html , 但找不到任何有用的示例来详细说明 Netty 4.0 中的用法。

任何帮助将不胜感激,非常感谢!!

最佳答案

基本上你会使用 IdleStateHandler和一个 ChannelStateHandler 实现,它将对 IdleStateEvent 使用react或直接使用 Channel 的 eventLoop。

例如,eventLoop 的用法可能是这样的:

Channel channel = ...
channel.eventLoop().schedule(new PingTask, delay, time unit);

关于java - Netty 中用于服务器端计划任务/事件的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16765960/

相关文章:

java - Netty SSL header

c - 从客户端到服务器建立 1000 个 TCP/IP 连接的延迟

java - 在 JavaFX 2 中使用 Swing 组件

java - Netty 消息接收超时

java - "Exception in thread "主要"java.lang.ArrayIndexOutOfBoundsException: 0"java错误

java - Netty 和多个处理程序

java - 遇到 java.net.bindexception 无法分配请求地址的问题

c - 在 C 中 echo 客户端-服务器

java - 使用 HashMap 的数字的最大频率。替代方法

java - 从本地 Spark 作业连接到 Azure Data Lake Gen 2