{ "info": { "author": "Dmitry Orlov ", "author_email": "me@mosquito.su", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: MacOS", "Operating System :: Microsoft", "Operating System :: POSIX", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Internet", "Topic :: Software Development", "Topic :: Software Development :: Libraries" ], "description": "WSRPC Tornado\n=============\n\n.. image:: https://travis-ci.org/wsrpc/wsrpc-tornado.svg\n :target: https://travis-ci.org/wsrpc/wsrpc-tornado\n :alt: Travis CI\n\n.. image:: https://img.shields.io/pypi/v/wsrpc-tornado.svg\n :target: https://pypi.python.org/pypi/wsrpc-tornado/\n :alt: Latest Version\n\n.. image:: https://img.shields.io/pypi/wheel/wsrpc-tornado.svg\n :target: https://pypi.python.org/pypi/wsrpc-tornado/\n\n.. image:: https://img.shields.io/pypi/pyversions/wsrpc-tornado.svg\n :target: https://pypi.python.org/pypi/wsrpc-tornado/\n\n.. image:: https://img.shields.io/pypi/l/wsrpc-tornado.svg\n :target: https://pypi.python.org/pypi/wsrpc-tornado/\n\nRemote Procedure call through WebSocket between browser and tornado.\n\nFeatures\n--------\n\n* Initiating call client function from server side.\n* Calling the server method from the client.\n* Transferring any exceptions from a client side to the server side and vise versa.\n* The frontend-library are well done for usage without any modification.\n* Fully asynchronous server-side functions.\n* Thread-based websocket handler for writing fully-synchronous code (for synchronous database drivers etc.)\n* Protected server-side methods (starts with underline never will be call from clients-side directly)\n* Asynchronous connection protocol. Server or client can call multiple methods with unpredictable ordering of answers.\n\n\nInstallation\n------------\n\nInstall via pip::\n\n pip install wsrpc-tornado\n\n\nInstall ujson if you want::\n\n pip install ujson\n\n\n\nSimple usage\n------------\n\nAdd the backend side\n\n\n.. code-block:: python\n\n from time import time\n ## If you want write async tornado code import it\n # from from wsrpc import WebSocketRoute, WebSocket, wsrpc_static\n ## else you should use thread-base handler\n from wsrpc import WebSocketRoute, WebSocketThreaded as WebSocket, wsrpc_static\n\n tornado.web.Application((\n # js static files will available as \"/js/wsrpc.min.js\".\n wsrpc_static(r'/js/(.*)'),\n # WebSocket handler. Client will connect here.\n (r\"/ws/\", WebSocket),\n # Serve other static files\n (r'/(.*)', tornado.web.StaticFileHandler, {\n 'path': os.path.join(project_root, 'static'),\n 'default_filename': 'index.html'\n }),\n ))\n\n # This class should be call by client.\n # Connection object will be have the instance of this class when will call route-alias.\n class TestRoute(WebSocketRoute):\n # This method will be executed when client will call route-alias first time.\n def init(self, **kwargs):\n # the python __init__ must be return \"self\". This method might return anything.\n return kwargs\n\n def getEpoch(self):\n # this method named by camelCase because the client can call it.\n return time()\n\n # stateful request\n # this is the route alias TestRoute as \"test1\"\n WebSocket.ROUTES['test1'] = TestRoute\n\n # stateless request\n WebSocket.ROUTES['test2'] = lambda *a, **kw: True\n\n # initialize ThreadPool. Needed when using WebSocketThreaded.\n WebSocket.init_pool()\n\n\n\nAdd the frontend side\n\n\n.. code-block:: HTML\n\n \n \n \n\nReverse call from Server to Client\n----------------------------------\nbackend:\n\n.. code-block:: python\n\n def do_notify(self):\n awesome = 'Notification for you!'\n yield self.socket.call('notify', result=awesome)\n\nfrontend:\n\n.. code-block:: HTML\n\n \n\n\nExample\n+++++++\n\nExample running there demo_.\n\n\n.. _demo: https://demo.wsrpc.info/", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/wsrpc/wsrpc-tornado", "keywords": null, "license": "Apache 2", "maintainer": null, "maintainer_email": null, "name": "wsrpc-tornado", "package_url": "https://pypi.org/project/wsrpc-tornado/", "platform": "all", "project_url": "https://pypi.org/project/wsrpc-tornado/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/wsrpc/wsrpc-tornado" }, "release_url": "https://pypi.org/project/wsrpc-tornado/0.5.6/", "requires_dist": null, "requires_python": null, "summary": "WSRPC WebSocket RPC for tornado", "version": "0.5.6" }, "last_serial": 2870000, "releases": { "0.3.9": [ { "comment_text": "", "digests": { "md5": "3b70006fd25bea116a465e8d3fcc571b", "sha256": "7fc789e51a23455822071247153b912502f6b76ab8f3a7cb68eabb30d41a0ec5" }, "downloads": -1, "filename": "wsrpc-tornado-0.3.9.tar.gz", "has_sig": false, "md5_digest": "3b70006fd25bea116a465e8d3fcc571b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29470, "upload_time": "2015-07-14T19:28:29", "url": "https://files.pythonhosted.org/packages/04/f7/e4ecf14404173a7e88e04b687cb019550c1f8eeb1d86ec107d88d72df58c/wsrpc-tornado-0.3.9.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "aa637a98627128647567e3e648558db1", "sha256": "05018072317cc69a2c7f7f2fccd2ac883c7c373f033619f37ce2f05be03d066c" }, "downloads": -1, "filename": "wsrpc-tornado-0.4.0.tar.gz", "has_sig": false, "md5_digest": "aa637a98627128647567e3e648558db1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29606, "upload_time": "2015-07-16T12:58:58", "url": "https://files.pythonhosted.org/packages/da/1e/6c6afc772cdad0ec13a0f2ec5b15049a06cd88810fbee1ebfecd786ec124/wsrpc-tornado-0.4.0.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "48a2104c51f4b792dc02dcaa37d8c330", "sha256": "732a7529fe6fb978caf16fe750cb6f380fb0ed338817d37a6c59ab8c9231e4bc" }, "downloads": -1, "filename": "wsrpc-tornado-0.4.2.tar.gz", "has_sig": false, "md5_digest": "48a2104c51f4b792dc02dcaa37d8c330", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29582, "upload_time": "2015-07-23T15:15:27", "url": "https://files.pythonhosted.org/packages/f0/04/348c51cef1f6742fda95fdda9d0e2c1f75fc14e1310aa67ad9a96b75e0f3/wsrpc-tornado-0.4.2.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "405f2f41349b1d7f47d3e2ef05852a04", "sha256": "783c590b13e25bc59d7b9b8970ecfcbf878779530360ee580e3c956902fbbad7" }, "downloads": -1, "filename": "wsrpc-tornado-0.5.0.tar.gz", "has_sig": false, "md5_digest": "405f2f41349b1d7f47d3e2ef05852a04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29601, "upload_time": "2015-08-17T18:42:49", "url": "https://files.pythonhosted.org/packages/a3/7d/89c061ec9e3d1cf02b616c2ab408a5679ac8bd23be84235bd6e86a94360d/wsrpc-tornado-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "2a5d50dc61c46675f6df9bd016b6fdf5", "sha256": "9294c05cf7a7dc8c11b73afab1977efc8b5094bb7095f6b26447f2a8933ede82" }, "downloads": -1, "filename": "wsrpc-tornado-0.5.1.tar.gz", "has_sig": false, "md5_digest": "2a5d50dc61c46675f6df9bd016b6fdf5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29632, "upload_time": "2015-08-29T23:13:54", "url": "https://files.pythonhosted.org/packages/2d/27/15fe46c9283ff49d678677e17b000482e3e6dea12bfce86f497c31c9a5a7/wsrpc-tornado-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "029a595d1fb5f3e029e0d18ecc3b66bc", "sha256": "9e659b24e67321a3747d345bbdd205e81321c3895ee24222a3e6a20edaad7f65" }, "downloads": -1, "filename": "wsrpc_tornado-0.5.2-py2-none-any.whl", "has_sig": false, "md5_digest": "029a595d1fb5f3e029e0d18ecc3b66bc", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 34255, "upload_time": "2015-09-07T19:40:02", "url": "https://files.pythonhosted.org/packages/53/02/960845db6d14967d7e2a9222862f7712a218339af21ecb9ffa5ac2bd8106/wsrpc_tornado-0.5.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e3a6ce398f96412e821a575523e9473f", "sha256": "9c1a9bf40e09a2655adc600bf21e7f2a2463f48bfb597788b1130e0635897121" }, "downloads": -1, "filename": "wsrpc-tornado-0.5.2.tar.gz", "has_sig": false, "md5_digest": "e3a6ce398f96412e821a575523e9473f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30941, "upload_time": "2015-09-07T19:39:57", "url": "https://files.pythonhosted.org/packages/1d/8f/0f71b075b207848c1a466f14d5a2e046da3d9ee2400569f3ad52bee513c0/wsrpc-tornado-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "42ca7159fa189fb00d9ba3d62396ce73", "sha256": "cd97c27bebbbb16412c1cf2af4771f640697a1cd13d10701e8d0e72b590f4e86" }, "downloads": -1, "filename": "wsrpc-tornado-0.5.3.tar.gz", "has_sig": false, "md5_digest": "42ca7159fa189fb00d9ba3d62396ce73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31055, "upload_time": "2016-08-29T09:52:42", "url": "https://files.pythonhosted.org/packages/05/d8/f8531aacbb9f3e8c3a602962d77676f8cd25824081f26504d73acabc587c/wsrpc-tornado-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "9279227cc14c026146d73496b56dd0fd", "sha256": "939b937e21c3ef59cc37b3c4ff97ace44276c27069eb73a5b366d5bd38e2e7ab" }, "downloads": -1, "filename": "wsrpc-tornado-0.5.4.tar.gz", "has_sig": false, "md5_digest": "9279227cc14c026146d73496b56dd0fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31061, "upload_time": "2016-12-19T19:46:58", "url": "https://files.pythonhosted.org/packages/a7/40/0f1257aab787fee6d2c46f12659c0538f83e44d61b5b499b0334d51b71b9/wsrpc-tornado-0.5.4.tar.gz" } ], "0.5.5": [ { "comment_text": "", "digests": { "md5": "9d2722f519c89440943c8549d5c13194", "sha256": "1b030eb4dff651404b9a5f37475b2184538f40195c9887d5f2e96a4af6a93101" }, "downloads": -1, "filename": "wsrpc-tornado-0.5.5.tar.gz", "has_sig": false, "md5_digest": "9d2722f519c89440943c8549d5c13194", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31608, "upload_time": "2016-12-19T20:09:15", "url": "https://files.pythonhosted.org/packages/c1/f0/4d263a27570697c05a9b0a89256e5d63dec55a8ed24519a3c9ae5e600886/wsrpc-tornado-0.5.5.tar.gz" } ], "0.5.6": [ { "comment_text": "", "digests": { "md5": "071a9259ed050e9027ff2830d5d48dd5", "sha256": "fba49858837a9ed8ebb0f12f2324f9838a3f4c755b0663bdec2b30384743eade" }, "downloads": -1, "filename": "wsrpc-tornado-0.5.6.tar.gz", "has_sig": false, "md5_digest": "071a9259ed050e9027ff2830d5d48dd5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31855, "upload_time": "2017-05-12T17:49:43", "url": "https://files.pythonhosted.org/packages/e6/95/14a508deb2148ca9287a67a48307a46814fd3000052505709c996b94e516/wsrpc-tornado-0.5.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "071a9259ed050e9027ff2830d5d48dd5", "sha256": "fba49858837a9ed8ebb0f12f2324f9838a3f4c755b0663bdec2b30384743eade" }, "downloads": -1, "filename": "wsrpc-tornado-0.5.6.tar.gz", "has_sig": false, "md5_digest": "071a9259ed050e9027ff2830d5d48dd5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31855, "upload_time": "2017-05-12T17:49:43", "url": "https://files.pythonhosted.org/packages/e6/95/14a508deb2148ca9287a67a48307a46814fd3000052505709c996b94e516/wsrpc-tornado-0.5.6.tar.gz" } ] }