我已经实现了一个 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()