Как я могу отлаживать вызовы txJSON-Rpc, используя клиент javascript и сервер Python? - PullRequest
0 голосов
/ 12 января 2012

Я реализовал приложение wxPython, в котором также есть сервер Twisted txJSONrpc.Это мой RPC "сервер";Я могу вызвать его с помощью сокета TCP и выдавать команды.

В txjsonrpc есть тестовый скрипт Python под названием client_subhandled.py, который я использовал для тестирования, и он вызывает и получает ответ от RPC-сервера, поэтому связь между клиентом и сервером Python работает.

Однако мне нужно делать вызовы JSON RPC из javascript, а не из Python.Для этого я использовал небольшой java-апплет, который позволяет открывать TCP-сокет из javascript и читать и записывать в него / из него (java_socket_bridge.js).Это также работает, я тестировал его не с использованием протокола JSON RPC, а с отправкой и получением простого текста с использованием простого протокола витого эха.

Проблема заключается в том, что при использовании javascript в качестве клиента я не могуполучить RPC JSON звонки на работу.Есть ли способ отладки входящих вызовов JSON RPC в txJSONrpc?В идеале я хотел бы посмотреть, какие объекты 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()

1 Ответ

0 голосов
/ 13 января 2012

вы пробовали использовать Wireshark ?

Будьте осторожны, похоже, что при захвате на localhost возникают некоторые проблемы;)

...