【问题标题】:Best approach in Netty for server-side scheduled tasks/eventsNetty 中用于服务器端计划任务/事件的最佳方法
【发布时间】:2017-12-21 22:24:04
【问题描述】:

我正在尝试在 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 中的用法。

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

【问题讨论】:

    标签: java netty tcp-ip


    【解决方案1】:

    基本上,您可以使用IdleStateHandler 和一个 ChannelStateHandler 实现,该实现将对 IdleStateEvent 做出反应,或者直接使用 Channel 的 eventLoop。

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

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

    【讨论】:

    • 感谢诺曼!我也会研究这个文档,这样做有意义吗?当服务器和客户端的初始连接建立后,创建一个连接远程地址的Netty客户端(原来的服务器成为客户端,原来的客户端成为服务器),让客户端做剩下的工作(类似于那个upTimeClient)
    • 这完全取决于你到底想做什么......但基本上是的,你可以做这样的事情
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2018-04-04
    • 1970-01-01
    • 2015-05-06
    相关资源
    最近更新 更多