7.1. 介绍

提供一个 Telnet 环境支持,给予没有界面类的应用一个可以通过命令行进行交互的工具。

  • 特性
    • 支持监听本地端口提供 Telnet 交互的界面。

    • 支持基于标准输入输出构建交互控制台的能力。

    • 利用 tConsole 可以轻松构建命令工具包。

例如:实现一个控制台命令。

  1. public class HelloWordExecutor implements TelExecutor {
  2. /** 命令的帮助信息,在 help <command> 时候输出这个信息 */
  3. public String helpInfo() {
  4. return "hello help.";
  5. }
  6. /** 执行命令体 */
  7. public String doCommand(TelCommand telCommand) throws Throwable {
  8. return "you say ->" + telCommand.getCommandName();
  9. }
  10. }

  • Server 模式
    • 利用 telnet 命令来交互
  1. public static void main(String[] args) {
  2. AppContext appContext = Hasor.create().build((TelModule) apiBinder -> {
  3. TelnetBuilder telnetBuild = apiBinder.asTelnet("127.0.0.1", 2180);
  4. telnetBuild.addExecutor("hello").to(HelloWordExecutor.class);
  5. }
  6. appContext.joinSignal();
  7. }

输入 telnet 127.0.0.1 2180 之后

  1. >telnet 127.0.0.1 2180
  2. Trying 127.0.0.1...
  3. Connected to 127.0.0.1.
  4. Escape character is '^]'.
  5. --------------------------------------------
  6.  
  7. Welcome to tConsole!
  8.  
  9. login : Tue Jan 07 14:26:29 CST 2020 now. form /127.0.0.1:60023
  10. workAt : /127.0.0.1:2180
  11. Tips: You can enter a 'help' or 'help -a' for more information.
  12. use the 'exit' or 'quit' out of the console.
  13. --------------------------------------------
  14. tConsole>

  • Host 模式
    • 充当命令工具包,制作 CLI 工具。

    • 建议利用 Spring Boot 的 fat jar 打包能力整合使用。

  1. public static void main(String[] args) {
  2. AppContext appContext = Hasor.create().build((TelModule) apiBinder -> {
  3. HostBuilder hostBuild = apiBinder.asHostWithSTDO().preCommand(args);
  4. hostBuild.addExecutor("hello").to(HelloWordExecutor.class);
  5. }
  6. }

输入 java xxx.jar hello 执行 hello 命令。