第 1 步:在本地进行部署和测试
在本步骤中,您将在本地计算机上下载、部署和测试井字游戏应用程序。您可以将 DynamoDB 下载到计算机上并在其中创建所需的表,而不是使用 Amazon DynamoDB Web 服务。
1.1:下载和安装所需的软件包
您需要以下软件包在本地测试此应用程序:
-
Python
-
Flask(适用于 Python 的 microframework)
-
Amazon SDK for Python (Boto)
-
在计算机中运行的 DynamoDB
-
Git
要获取这些工具,请执行以下操作:
-
安装 Python。如需分步说明,请参见下载 Python
。 已经使用 Python 版本 2.7 对该井字游戏应用程序进行了测试。
-
使用 Python Package Installer (PIP) 安装 Flask 和 Amazon SDK for Python (Boto):
-
安装 PIP。
有关说明,请参见安装 PIP
。在安装页面上,选择 get-pip.py 链接,接着保存该文件。然后,以管理员身份打开命令终端,并在命令提示符下输入以下内容。 python.exe get-pip.py
在 Linux 上,您不必指定
.exe
扩展名。只需指定python get-pip.py
。 -
使用 PIP,通过以下代码安装 Flask 和 Boto 软件包。
pip install Flask pip install boto pip install configparser
-
-
将 DynamoDB 下载到您的计算机中。有关运行方法的说明,请参阅 设置 DynamoDB local(可下载版本) 。
-
下载井字游戏应用程序:
-
安装 Git。有关说明,请参阅 git 下载
。 -
运行下面的代码,下载应用程序。
git clone https://github.com/awslabs/dynamodb-tictactoe-example-app.git
-
1.2:测试游戏应用程序
要测试井字游戏应用程序,您需要在计算机上本地运行 DynamoDB。
运行井字游戏应用程序
-
启动 DynamoDB。
-
启动井字游戏应用程序的 Web 服务器。
要执行此操作,请打开命令终端,导航到您将井字游戏应用程序下载到的文件夹,然后使用以下代码在本地运行此应用程序。
python.exe application.py --mode local --serverPort 5000 --port 8000
在 Linux 上,您不必指定
.exe
扩展名。 -
打开您的 Web 浏览器,然后输入以下内容。
http://localhost:5000/
浏览器将显示主页。
-
在 Log in (登录) 框中输入
user1
,以 user1 身份登录。注意
此示例应用程序不执行任何用户身份验证。用户 ID 仅用于标识玩家。如果两个玩家以同一别名登录,应用程序的工作方式就像您在两个不同的浏览器中玩游戏一样。
-
如果您是第一次玩这款游戏,将显示一个页面,要求您在 DynamoDB 中创建所需的表 (
Games
)。选择 CREATE TABLE (创建表)。 -
选择 CREATE (创建) 以创建第一个井字游戏。
-
在 Choose an Opponent (选择对手) 框中输入
user2
,然后选择 Create Game! (创建游戏!)执行此操作将通过在
Games
表中添加项目来创建游戏。它将游戏状态设置为PENDING
。 -
打开另一个浏览器窗口,然后输入以下内容。
http://localhost:5000/
浏览器通过 Cookie 传递信息,因此,您应使用无痕模式或私密浏览,这样就不会传输您的 Cookie。
-
作为 user2 登录。
此时将显示一个页面,其中显示有一个来自 user1 的邀请等待接受。
-
选择接受以接受邀请。
游戏页面显示空的井字游戏网格。该页面还会显示相关的游戏信息,例如游戏 ID、发起游戏的用户以及游戏状态。
-
玩游戏。
对于用户的每一次移动,Web 服务都会向 DynamoDB 发送请求,以在 Games
表中有条件地更新游戏项目。例如,条件可确保移动有效,用户选择的方框可用,以及轮到进行移动的用户。对于有效的移动,更新操作会添加与面板中的选择对应的新属性。更新操作还会将现有属性的值设置到可以进行下一次移动的用户。
在游戏页面上,应用程序每秒进行若干次异步 JavaScript 调用,持续时间最多达五分钟,以检查 DynamoDB 中的游戏状态是否已更改。如果游戏状态有更改,则应用程序使用新信息更新页面。五分钟之后,应用程序停止发出请求,您需要刷新页面以获取更新后的信息。