如何使用 javascript 客户端和 Python 服务器调试 txJSON-Rpc 调用?

Posted

技术标签:

【中文标题】如何使用 javascript 客户端和 Python 服务器调试 txJSON-Rpc 调用?【英文标题】:How can I debug txJSON-Rpc calls using a javascript client and Python server? 【发布时间】:2012-01-12 16:13:54 【问题描述】:

我已经实现了一个 wxPython 应用程序,其中也有一个 Twisted txJSONrpc 服务器。这是我的 RPC“服务器”;我可以使用 TCP 套接字调用它并发出命令。

我曾经测试过的txjsonrpc中有一个名为client_subhandled.py的Python测试脚本,它调用并接收来自RPC服务器的应答,所以Python客户端/服务器通信正常。

但是,我需要从 javascript 而不是 Python 进行 JSON RPC 调用。为此,我使用了一个小型 Java 小程序,它允许您从 javascript 打开 TCP 套接字并对其进行读写(java_socket_bridge.js)。这也有效,我没有使用 JSON RPC 协议测试它,而是使用简单的扭曲回显协议发送和接收纯文本。

问题是使用 javascript 作为客户端,我似乎无法让 rpc JSON 调用工作。有没有办法在 txJSONrpc 中调试传入的 JSON rpc 调用?理想情况下,我想看看服务器中有哪些 JSON 对象,看看它们是否合规。

谢谢!

from twisted.internet import wxreactor  # socket library
wxreactor.install()                     # for using twisted along with wxPython

# using netstring TCP protocol
from txjsonrpc.netstring import jsonrpc
from twisted.web import server

# import twisted reactor *only after* installing wxreactor
from twisted.internet import reactor

myreactor = reactor

def register(application):
    # initialise and run the TWISTED reactor
    reactor.registerWxApp(application)
    #rpcCom.myreactor.listenTCP(9000, rpcCom.EchoServerFactory())
    reactor.listenTCP(9000, factory)
    reactor.run()

class Example(jsonrpc.JSONRPC):
    """An example object to be published."""

    def jsonrpc_echo(self, x):
        """Return all passed args."""
        print "echo called"
        return x

class Testing(jsonrpc.JSONRPC):

    def jsonrpc_getList(self):
        """Return a list."""
        return [1,2,3,4,'a','b','c','d']

class Math(jsonrpc.JSONRPC):
    """
    An example object to be published.
    """
    def jsonrpc_add(self, a, b):
        """
        Return sum of arguments.
        """
        return a + b

factory = jsonrpc.RPCFactory(Example)
factory.putSubHandler('math', Math)
factory.putSubHandler('testing', Testing)

factory.addIntrospection()

【问题讨论】:

[Wireshark](wireshark.org) 嗨@yanjost,我已经安装了wireshark,但它无法在同一台机器上捕获客户端-服务器流量:wiki.wireshark.org/CaptureSetup/Loopback 您是否尝试过此页面上的不同方法来解决环回问题? 啊,rawcap.exe 似乎在 Windows 7 下可以解决问题。我现在遇到了其他问题(netstring 在数据包中不是真正可读或可比的),但原则上答案是正确的。谢谢 yanjost,请添加您的评论作为答案,以便我将其标记为解决方案。 【参考方案1】:

您尝试过使用Wireshark 吗?

小心,在 localhost 上捕获时似乎存在一些问题;)

【讨论】:

以上是关于如何使用 javascript 客户端和 Python 服务器调试 txJSON-Rpc 调用?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 中为 GRIDdb python 客户端设置 swig 安装?

如何使用 angular 2 或 javascript 从客户端计算机获取日期和时间格式?

如何使用 c# 或 jQuery 或 Javascript 获取客户端系统/PC 域名和 PC 名称

如何从服务器端加密数据并将其传递到客户端(javascript)并解密和使用它

如何使用 javascript 客户端和 Python 服务器调试 txJSON-Rpc 调用?

如何使用 Python(带有 websockets 的服务器)和 JavaScript(客户端)接收 JSON 数据