探索继续:使用AsyncSSH移植文字游戏

探索继续:使用AsyncSSH移植文字游戏

💡 原文英文,约2600词,阅读约需10分钟。
📝

内容提要

上周,我们重新实现了20个问题的游戏,并构建了网页和命令行界面。命令行界面仅限本地使用,无法与朋友共享。通过探索Python的AsyncSSH库,我们成功将游戏通过SSH托管,提供了交互式体验。文章分享了实现过程中的学习与发现。

🎯

关键要点

  • 上周重新实现了20个问题的游戏,并构建了网页和命令行界面。
  • 命令行界面仅限本地使用,无法与朋友共享。
  • 通过探索Python的AsyncSSH库,成功将游戏通过SSH托管,提供了交互式体验。
  • Paramiko和AsyncSSH是构建SSH服务器应用程序的库,AsyncSSH提供了更简单的文档和示例。
  • 实现过程中使用了asyncssh.SSHServer和asyncssh.SSHServerSession类来定义应用逻辑。
  • 通过asyncssh.create_server创建SSH服务器,设置了用户交互。
  • 在处理用户输入时,使用了process.stdin.readline()来读取输入。
  • 最终成功将游戏移植到SSH上,提供了同步的REPL体验。
  • 文章分享了在实现过程中学习到的知识和经验,强调了AsyncSSH的直观开发体验。

延伸问答

如何使用AsyncSSH库托管文字游戏?

通过AsyncSSH库,可以创建SSH服务器并定义应用逻辑,使用asyncssh.create_server来设置用户交互,从而托管文字游戏。

AsyncSSH与Paramiko有什么区别?

AsyncSSH提供了更简单的文档和示例,尽管Paramiko在GitHub上获得了更多的星标,但AsyncSSH在构建SSH服务器应用程序时更为直观。

在实现过程中遇到了哪些挑战?

实现过程中遇到的挑战包括用户输入处理的复杂性,以及如何确保应用在SSH环境下的交互体验流畅。

如何处理用户输入和输出?

用户输入通过asyncssh.SSHLineEditorChannel对象的readline()方法读取,输出则通过write()方法发送到SSH客户端。

文章中提到的REPL体验是什么?

REPL体验指的是读取用户输入、处理并打印响应的循环过程,使得游戏的交互变得同步。

如何启动AsyncSSH服务器?

可以通过asyncssh.create_server函数启动AsyncSSH服务器,并设置相应的主机密钥和端口。

➡️

继续阅读