{ "info": { "author": "Yingbo Gu", "author_email": "tensiongyb@gmail.com", "bugtrack_url": null, "classifiers": [ "Framework :: AsyncIO", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.6" ], "description": "# websocket-rpc\n\n[![Build Status](https://travis-ci.org/guyingbo/websocket-rpc.svg?branch=master)](https://travis-ci.org/guyingbo/websocket-rpc)\n[![Python Version](https://img.shields.io/pypi/pyversions/websocket-rpc.svg)](https://pypi.python.org/pypi/websocket-rpc)\n[![Version](https://img.shields.io/pypi/v/websocket-rpc.svg)](https://pypi.python.org/pypi/websocket-rpc)\n[![Format](https://img.shields.io/pypi/format/websocket-rpc.svg)](https://pypi.python.org/pypi/websocket-rpc)\n[![License](https://img.shields.io/pypi/l/websocket-rpc.svg)](https://pypi.python.org/pypi/websocket-rpc)\n[![codecov](https://codecov.io/gh/guyingbo/websocket-rpc/branch/master/graph/badge.svg)](https://codecov.io/gh/guyingbo/websocket-rpc)\n\nmsgpack rpc over websocket\n\n## Examples\n\nserver:\n```python\nimport asyncio\nfrom sanic import Sanic\nfrom wsrpc import WebsocketRPC\napp = Sanic(__name__)\n\n\nclass SampleHandler:\n def __init__(self, rpc):\n self.remote = rpc\n\n async def add(self, a, b):\n await asyncio.sleep(5)\n return a + b\n\n async def test(self):\n return 23\n\n\n@app.websocket('/')\nasync def home(request, ws):\n await WebsocketRPC(ws, SampleHandler).run()\napp.run(host=\"0.0.0.0\", port=5555, debug=False)\n```\n\nclient:\n```python\nimport asyncio\nimport websockets\nfrom wsrpc import WebsocketRPC\nloop = asyncio.get_event_loop()\n\n\nasync def go():\n async with websockets.connect('ws://127.0.0.1:5555/') as ws:\n rpc = WebsocketRPC(ws=ws, client_mode=True)\n jobs = [rpc.request.add(a, b) for a, b in zip(range(10), range(5, 15))]\n r = await asyncio.gather(*jobs)\n print(r)\n r = await rpc.notify.add(2, 3)\n print(r)\n await rpc.close()\n\n\nloop.run_until_complete(go())\n```\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/guyingbo/websocket-rpc", "keywords": "websocket rpc msgpack python", "license": "", "maintainer": "Yingbo Gu", "maintainer_email": "tensiongyb@gmail.com", "name": "websocket-rpc", "package_url": "https://pypi.org/project/websocket-rpc/", "platform": "", "project_url": "https://pypi.org/project/websocket-rpc/", "project_urls": { "Homepage": "https://github.com/guyingbo/websocket-rpc" }, "release_url": "https://pypi.org/project/websocket-rpc/0.0.5/", "requires_dist": [ "websockets>=4.0.1", "msgpack>=0.5.1" ], "requires_python": ">=3.6", "summary": "msgpack rpc over websockets", "version": "0.0.5" }, "last_serial": 4077487, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "18c1657538509fabec4f9519109dace1", "sha256": "848afbf0cb246d8f08fd5b7f8db18a6c823989e810179f397b9f704c1d7efa09" }, "downloads": -1, "filename": "websocket-rpc-0.0.1.tar.gz", "has_sig": false, "md5_digest": "18c1657538509fabec4f9519109dace1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 2387, "upload_time": "2018-01-22T06:51:23", "url": "https://files.pythonhosted.org/packages/2e/04/cea58d15df62357d5d4e806c8fb292785da553114bef66d1785273506c5e/websocket-rpc-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "e40df15b0d318d8f635ff531f8acb119", "sha256": "4f8505d712dbe258a88d29a5d37f358c5b854e78674e83460e5681b4c820da4a" }, "downloads": -1, "filename": "websocket-rpc-0.0.2.tar.gz", "has_sig": false, "md5_digest": "e40df15b0d318d8f635ff531f8acb119", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 2762, "upload_time": "2018-03-06T03:18:20", "url": "https://files.pythonhosted.org/packages/44/4d/467eb652f7ba717f4aa23c6385a8f7df43050e0d2e7fe666a75f0b96800d/websocket-rpc-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "f81ee16eb68aed9d7bc5100194e3c069", "sha256": "f4717eaeaf1410b571218efcb918b93374798de8ce662b75502ebde30ba9d363" }, "downloads": -1, "filename": "websocket-rpc-0.0.3.tar.gz", "has_sig": false, "md5_digest": "f81ee16eb68aed9d7bc5100194e3c069", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 2958, "upload_time": "2018-06-15T07:55:18", "url": "https://files.pythonhosted.org/packages/c5/ee/5d504cf8075b99ada2e5d255b3df506f93cdcb4efc88eb42548710396bdd/websocket-rpc-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "2bf4f0511e569f7975f4bb088f433075", "sha256": "6185356fef83e2fe3d39fff24618b77afd9b80790fe23697b8ff8f156b0c0e6e" }, "downloads": -1, "filename": "websocket_rpc-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "2bf4f0511e569f7975f4bb088f433075", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8145, "upload_time": "2018-07-13T07:40:43", "url": "https://files.pythonhosted.org/packages/a5/4c/9c16dfd30555bb4444df94f9916e07d8ce371211c036d4d610c30f8c244f/websocket_rpc-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8a30c37d304a9fa4725f341b4d03dbb4", "sha256": "af202c699b95c137faa82d647f256cac032ac7f56849cebc4fdd50927aec3795" }, "downloads": -1, "filename": "websocket-rpc-0.0.4.tar.gz", "has_sig": false, "md5_digest": "8a30c37d304a9fa4725f341b4d03dbb4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6939, "upload_time": "2018-07-13T07:40:45", "url": "https://files.pythonhosted.org/packages/c5/6e/495efdff625ca6fd137392a01feb8ce7f5a847148dc013836e7dbbd0442b/websocket-rpc-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "f8440ce74717d47fe41060f640e55076", "sha256": "d8bc4f9e8465b6b828263af152d3e224d356387dae3727128ca18f0c8b9876c5" }, "downloads": -1, "filename": "websocket_rpc-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "f8440ce74717d47fe41060f640e55076", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8539, "upload_time": "2018-07-18T11:13:15", "url": "https://files.pythonhosted.org/packages/c9/94/3a4f3f06ea6525487c9a27eea8a8b306e05234779c5d1876433040bc7dba/websocket_rpc-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f75f2b39b0e70e2717fe72af4b752d7", "sha256": "e61dd1c9776f186e2855f5ed284d284db4cdd68ce53a65e094da7e09daf7595e" }, "downloads": -1, "filename": "websocket-rpc-0.0.5.tar.gz", "has_sig": false, "md5_digest": "9f75f2b39b0e70e2717fe72af4b752d7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7150, "upload_time": "2018-07-18T11:13:18", "url": "https://files.pythonhosted.org/packages/4b/4f/fbc3019e0e8f8bdf573cb730fc20c30dc6c1eb49b5cc13c7d47b262f6518/websocket-rpc-0.0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f8440ce74717d47fe41060f640e55076", "sha256": "d8bc4f9e8465b6b828263af152d3e224d356387dae3727128ca18f0c8b9876c5" }, "downloads": -1, "filename": "websocket_rpc-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "f8440ce74717d47fe41060f640e55076", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8539, "upload_time": "2018-07-18T11:13:15", "url": "https://files.pythonhosted.org/packages/c9/94/3a4f3f06ea6525487c9a27eea8a8b306e05234779c5d1876433040bc7dba/websocket_rpc-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f75f2b39b0e70e2717fe72af4b752d7", "sha256": "e61dd1c9776f186e2855f5ed284d284db4cdd68ce53a65e094da7e09daf7595e" }, "downloads": -1, "filename": "websocket-rpc-0.0.5.tar.gz", "has_sig": false, "md5_digest": "9f75f2b39b0e70e2717fe72af4b752d7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7150, "upload_time": "2018-07-18T11:13:18", "url": "https://files.pythonhosted.org/packages/4b/4f/fbc3019e0e8f8bdf573cb730fc20c30dc6c1eb49b5cc13c7d47b262f6518/websocket-rpc-0.0.5.tar.gz" } ] }