I'm reposting as my first didn't seem to go through....

I got this working with the pyjamas JSONRPCExample.  Most of the
changes were in the jsonrpc server examples posted above. Here's the
code

---------------- controllers/rpc.py ----------------------
# try something like
def index():
    return jsonrpc.serve()

@jsonrpc
def echo(text):
    return 'echoing: %s' % text

@jsonrpc
def reverse(text):
    return text[-1::-1]

@jsonrpc
def uppercase(text):
    return text.upper()

@jsonrpc
def lowercase(text):
    return text.lower()

------------- models/jsonrpc.py -------------------------
"""
original code from : http://trac.pyworks.org/pyjamas/wiki/DjangoWithPyJamas
"""
import gluon.contrib.simplejson as simplejson
import types

class JSONRPCService:
    def response(self, id, result):
        return simplejson.dumps({'version': '1.1', 'id':id,
'result':result, 'error':None})
    def error(self, id, code, message):
        return simplejson.dumps({'id': id,
                                 'version': '1.1',
                                 'error': {'name': 'JSONRPCError',
                                           'code': code,
                                           'message': message
                                           }
                                     })

    def __init__(self):
        self.methods={}

    def serve(self):
        import sys
        data = simplejson.loads(request.body.read())
        id, method, params = data["id"], data["method"], data
["params"]
        if method in self.methods:
            try:
                result =self.methods[method](*params)
                return self.response(id, result)
            except BaseException:
                etype, eval, etb = sys.exc_info()
                return self.error(id, 100, '%s: %s' %(etype.__name__,
eval))
            except:
                etype, eval, etb = sys.exc_info()
                return self.error(id, 100, 'Exception %s: %s' %(etype,
eval))
        else:
            return self.error(id, 100, 'method "%s" does not exist' %
method)

    def __call__(self,func):
        self.methods[func.__name__]=func
        return func

    def listmethods(self):
        return self.methods.keys()

jsonrpc=JSONRPCService()

-----------------------------------------------------------------------------------------

Then you need to change the server location in the pyjamas code  to
something like this

class EchoServicePython(JSONProxy):
    def __init__(self):
        JSONProxy.__init__(self, "/pyjamas_2/rpc", ["echo", "reverse",
"uppercase", "lowercase"])

where you would change "pyjamas_2" for your app name

I put the "output" folder from the pyjamas build into the web2py
static directory



Chris

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to