Netty 每 10 秒与服务器通信一次

Netty communicating to a server every 10 seconds

我正在尝试从客户端构建一个线程,该线程将与服务器通信并每隔 10 秒从中请求一个 SHA-1 字符串。例如,我希望这个线程在我正在制作的程序的后台 运行 并每 10 秒检查一次它从服务器获取的 SHA-1 字符串是否与客户端机器本地存储的字符串相同。

作为初学者,我已经学习了一些 Netty 教程,但我无法完全理解如何从每 x 秒向服务器发送特定消息的客户端创建连接。我是否必须配置客户端(创建一个新的 EvenLoopGroup,initChannel 每 10 秒)或者我应该将 ClientHandler 扩展为 TimerTask(或线程)?我应该创建 2 个客户端连接,一个用于后台线程,一个用于主程序,并且每个连接都有不同的处理程序吗?服务器如何区分接收到的消息是来自后台线程还是来自主客户端程序并执行不同的操作?

感谢任何帮助,或者您可以向我指出更高级的教程(如果有的话)。

您可以使用客户端通道的事件循环来安排任务并使用客户端context/channel发送对 SHA-1 字符串的请求:

public static void scheduleFixedViaEventLoop() {
        Channel ch = CHANNEL_OF_THE_CLIENT_SOMEWHERE; // get reference from somewhere
        ScheduledFuture<?> future = ch.eventLoop().scheduleAtFixedRate(
           new Runnable() {
           @Override
           public void run() {
               ch.writeAndFlush(THE_REQUEST);
               }
           }, 10, 10, TimeUnit.SECONDS);
}

您可以在引导客户端后添加此代码。您需要验证客户端入站处理程序中的响应——为此,您需要能够将此特定请求的响应与其他响应区分开来。