记录和重放RealityServer Web服务请求

时间:2015-08-05 09:11:13

标签: 3d json-rpc realityserver

我正在尝试使用我的RealityServer应用程序诊断问题,但是使用我的应用程序用户界面手动重现问题变得非常耗时。

有没有办法记录和重放RealityServer收到的JSON-RPC Web服务命令,这样我可以在不使用应用程序用户界面的情况下重现我的问题?

2 个答案:

答案 0 :(得分:4)

RealityServer提供了两种监视请求的工具。您可能对此案例感兴趣的主要是 Commandlog 插件,该插件随RealityServer一起提供,但默认情况下处于禁用状态。您需要编辑 realityserver.conf 文件并取消注释相关行。以下是该文件的相关部分:

# uncomment below to enable the command logging state handler.
# this will record every JSON-RPC command received during a RealityServer
# session into a python script which can later be replayed to re-run the
# session. this can be useful for tracking down bugs.
# note that when enabled this will overwrite the replay.py file every
# time RealityServer starts so you must ensure you make a copy of any
# file you wish to keep. The file is created in the working directory,
# not the RealityServer root.
<url .*>
state Commandlog_state_handler
</url>

如上所述,启用此状态处理程序会将所有JSON-RPC个请求记录到特殊的Python文件中。然后,您可以像这样运行此文件:

python replay.py 127.0.0.1:8080

然后,这将把记录的命令序列发送到正在运行的RealityServer。这些命令与录制的命令完全相同,但不包括时序,因此将尽快播放。如果您的问题是时间敏感的,您可能需要使用替代方法来捕获和重放数据。

注意: RealityServer会在启动时覆盖replay.py文件,因此如果您希望在启动之间保留该文件,则必须将该文件复制到另一个名称。如果您使用脚本自动重启RealityServer,则需要注意包括复制文件的步骤。

如果您希望记录所有HTTP请求而不仅仅是JSON-RPC请求,还可以添加以下 realityserver.conf 选项:

http_log access.log

这将以Apache Log格式记录所有请求,这对于支持该格式的工具非常有用。可以找到RealityServer配置选项的完整列表here

答案 1 :(得分:1)

使用您选择的任何编程语言编写自己的程序,或尝试Fiddler。 Fiddler可以记录HTTP会话并重放它们。