{ "info": { "author": "duanhongyi", "author_email": "duanhongyi@github.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities" ], "description": "================\ndwebsocket\n================\n\nThe **dwebsocket** module provides an implementation of the WebSocket\nProtocol for django. \n\nThis module implements the final version of the WebSocket protocol as\ndefined in `RFC 6455 `_. Certain\nbrowser versions (notably Safari 5.x) implemented an earlier draft of\nthe protocol (known as \"draft 76\") and are not compatible with this module.\n\nThe **dwebsocket** module based django-websocket development, django-websocket\nmodule in `https://github.com/gregmuellegger/django-websocket`.\nThank you Gregor M\u00fcllegger.\n\nUsage\n=====\n\nYou can use the ``accept_websocket`` decorator if you want to handle websocket\nconnections just for a single view - it will route standard HTTP requests to\nthe view as well. Use ``require_websocket`` to only allow WebSocket\nconnections but reject normal HTTP requests.\n\nYou can use a middleware if you want to have WebSockets available for *all*\nURLs in your application. Add\n``dwebsocket.middleware.WebSocketMiddleware`` to your\n``MIDDLEWARE_CLASSES`` setting. This will still reject websockets for normal\nviews. You have to set the ``accept_websocket`` attribute on a view to allow\nwebsockets.\n\nTo allow websockets for *every single view*, set the ``WEBSOCKET_ACCEPT_ALL``\nsetting to ``True``.\n\nThe request objects passed to a view, decorated with ``accept_websocket`` or\n``require_websocket`` will have the following attributes/methods attached.\nThese attributes are always available if you use the middleware.\n\n``request.is_websocket()``\n--------------------------\n\nReturns either ``True`` if the request has a valid websocket or ``False`` if\nits a normal HTTP request. Use this method in views that can accept both types\nof requests to distinguish between them.\n\n``request.websocket``\n---------------------\n\nAfter a websocket is established, the request will have a ``websocket``\nattribute which provides a simple API to communicate with the client. This\nattribute will be ``None`` if ``request.is_websocket()`` returns ``False``.\n\nIt has the following public methods:\n\n``WebSocket.wait(timeout=-1)``\n~~~~~~~~~~~~~~~~~~~~\n\nThis will return exactly one message sent by the client. It will not return\nbefore a message is received or the conection is closed by the client. In this\ncase the method will return ``None``.\n\n``WebSocket.read()``\n~~~~~~~~~~~~~~~~~~~~\n\nThe ``read`` method will return either a new message if available or ``None``\nif no new message was received from the client. It is a non-blocking\nalternative to the ``wait()`` method.\n\n``WebSocket.count_messages()``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nReturns the number of queued messages.\n\n``WebSocket.has_messages()``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nReturns ``True`` if new messages are available, else ``False``.\n\n``WebSocket.send(message)``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis will send a single message to the client.\n\n``WebSocket.__iter__()``\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nYou can use the websocket as iterator. It will yield every new message sent by\nthe client and stop iteration after the client has closed the connection.\n\n``WebSocket.is_closed()``\n~~~~~~~~~~~~~~~~~~~~~~~~\nReturn to ``True`` if websocket is closed, else ``False``.\n\nError handling\n--------------\n\nThe library will return a Http 400 error (Bad Request) if the client requests\na WebSocket connection, but the request is malformed or not supported by\n*dwebsocket*.\n\nExamples\n========\n\nReceive one message from the client, send that message back to the client and\nclose the connection (by returning from the view)::\n\n from dwebsocket import require_websocket\n\n @require_websocket\n def echo_once(request):\n message = request.websocket.wait()\n request.websocket.send(message)\n\nSend websocket messages from the client as lowercase and provide same\nfunctionallity for normal GET requests::\n\n from django.http import HttpResponse\n from dwebsocket import accept_websocket\n\n def modify_message(message):\n return message.lower()\n\n @accept_websocket\n def lower_case(request):\n if not request.is_websocket():\n message = request.GET['message']\n message = modify_message(message)\n return HttpResponse(message)\n else:\n for message in request.websocket:\n message = modify_message(message)\n request.websocket.send(message)\n\n\nChange websocket backends\n-------------------\n\nCurrently supports two kinds of backends, they are default and uwsgi.\n\nDjango develop server, eventlent, gevent, gunicore are supported by default.\n\nIf you want to use the uwsgi backend, add `WEBSOCKET_FACTORY_CLASS` in the settings.py file::\n\n WEBSOCKET_FACTORY_CLASS = 'dwebsocket.backends.uwsgi.factory.uWsgiWebSocketFactory'\n\nRun uwsgi::\n\n uwsgi --http :8080 --http-websockets --processes 1 \\\n --wsgi-file wsgi.py--async 30 --ugreen --http-timeout 300\n\n\nUsing in production\n-------------------\n\nCurrently there is a cluster of two machines being used dwebsocket, it uses\ngevent wsgi deployed, each machine around 150,000 concurrent connections.\n\n\nContribute\n==========\n\nEvery contribution in any form is welcome. Ask questions, report bugs, request\nnew features, make rants or tell me any other critique you may have.\n\nOne of the biggest contributions you can make is giving me a quick *Thank you*\nif you like this library or if it has saved you a bunch of time.\n\nBut if you want to get your hands dirty:\n\n- Get the code from github: https://github.com/duanhongyi/dwebsocket\n- Start coding :)\n- Send me a pull request or an email with a patch.\n\n\nChangelog\n=========\n\nRelease 0.2.1\n-------------\n\n- Initial release", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/duanhongyi/dwebsocket", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "dwebsocket", "package_url": "https://pypi.org/project/dwebsocket/", "platform": "", "project_url": "https://pypi.org/project/dwebsocket/", "project_urls": { "Homepage": "http://github.com/duanhongyi/dwebsocket" }, "release_url": "https://pypi.org/project/dwebsocket/0.5.11/", "requires_dist": null, "requires_python": "", "summary": "Websocket support for django.", "version": "0.5.11" }, "last_serial": 5813315, "releases": { "0.2.1": [ { "comment_text": "", "digests": { "md5": "f40c2fe781e3f8dc353daba4c619f201", "sha256": "f61b7a47517a6633011a14f97270b85194480231c472a5abb6fa1087c1ed4ae2" }, "downloads": -1, "filename": "dwebsocket-0.2.1-py2.7.egg", "has_sig": false, "md5_digest": "f40c2fe781e3f8dc353daba4c619f201", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 18269, "upload_time": "2014-11-03T05:46:56", "url": "https://files.pythonhosted.org/packages/87/23/d3e5fa9435badec73933b0d5117d1720a50412288bd092590b1ee99368a7/dwebsocket-0.2.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "2a4be9b1da9127be7cd40452fe8483ef", "sha256": "490e9fd2130aefa9ace31fc494459449bd7bc2e5bb35dd245682800a214dab62" }, "downloads": -1, "filename": "dwebsocket-0.2.1.tar.gz", "has_sig": false, "md5_digest": "2a4be9b1da9127be7cd40452fe8483ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13397, "upload_time": "2014-11-03T05:46:53", "url": "https://files.pythonhosted.org/packages/92/e0/1ae53495179d6ac18be8f5e2139a4e623f5d01f01471a7975623a51de148/dwebsocket-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "028b160c26c175b9bb7381cdd81cfd3d", "sha256": "b060ffd8a81801330e84436da9b5f3dc43ed31c8fa943fa6a5e8730b7d62ec93" }, "downloads": -1, "filename": "dwebsocket-0.2.2-py2.7.egg", "has_sig": false, "md5_digest": "028b160c26c175b9bb7381cdd81cfd3d", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 18704, "upload_time": "2014-11-03T09:01:37", "url": "https://files.pythonhosted.org/packages/5f/f9/e96eacde1d13edad90dee6e1ba104fdf9bbe701e26acc1718283ed6103b6/dwebsocket-0.2.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "951edbced8df74e018885255912f9fde", "sha256": "921f353c5fd7f0949055d31baac342395bc272e101b9b8c2368639f8d3158d07" }, "downloads": -1, "filename": "dwebsocket-0.2.2.tar.gz", "has_sig": false, "md5_digest": "951edbced8df74e018885255912f9fde", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13630, "upload_time": "2014-11-03T09:01:34", "url": "https://files.pythonhosted.org/packages/5c/07/dc1d95cded0b345933dda04dbe1e7ba688aa77877368d359234babe6b939/dwebsocket-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "1907db77d7d6c72f1b48dc78e702dc85", "sha256": "4ab3aec907d4cf4603f162428fda6e3ebef224e28ebc4de6a88179eb4ae065b0" }, "downloads": -1, "filename": "dwebsocket-0.2.3-py2.7.egg", "has_sig": false, "md5_digest": "1907db77d7d6c72f1b48dc78e702dc85", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 18761, "upload_time": "2014-11-04T03:03:08", "url": "https://files.pythonhosted.org/packages/62/0f/0a88142c3265b0c3a7f296343391ed8738b30fd046b37770cb003c808e3d/dwebsocket-0.2.3-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "e647a733b66d04ed5e0772348e66ec5f", "sha256": "c6e89e9807340ee8854ea7b643416528f1b0c1c9bf71b0c56ef601d5480bb573" }, "downloads": -1, "filename": "dwebsocket-0.2.3.tar.gz", "has_sig": false, "md5_digest": "e647a733b66d04ed5e0772348e66ec5f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13655, "upload_time": "2014-11-04T03:03:12", "url": "https://files.pythonhosted.org/packages/46/76/7234d62c01495912c17392715406fba46cf3f6fdc51fd56d9133dae7cc43/dwebsocket-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "8173046a3942b9af0ddc1058897a8098", "sha256": "57fec0f79933fc006f8f14ab105054f015e852c3503fe1ffb9b89cf0ae1ee20d" }, "downloads": -1, "filename": "dwebsocket-0.2.4-py2.7.egg", "has_sig": false, "md5_digest": "8173046a3942b9af0ddc1058897a8098", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 18767, "upload_time": "2014-11-04T06:11:15", "url": "https://files.pythonhosted.org/packages/26/30/0ef18a2e73ac8dcc2f06b8d738c51471d784a7cb7a9b3b2238707fb41b1b/dwebsocket-0.2.4-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "0e428b97d790922c16f6dc0cea26c8dd", "sha256": "aa37002c865b3fc793136c19a0e9ea473cd966a0a5d67dbd13e2d8e43582468b" }, "downloads": -1, "filename": "dwebsocket-0.2.4.tar.gz", "has_sig": false, "md5_digest": "0e428b97d790922c16f6dc0cea26c8dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14541, "upload_time": "2014-11-04T06:11:09", "url": "https://files.pythonhosted.org/packages/e3/17/7d2d717c10d2d8be858449e8f6a83bfc456c5677bc42a08481ad0ef06b1f/dwebsocket-0.2.4.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "e76556a1e09d00ce8b75796b89e0629a", "sha256": "7793c98d3c178b6abf36e8ae8e3192d8a878716aa3fc0646c925d4edccb4cdc8" }, "downloads": -1, "filename": "dwebsocket-0.3.1.tar.gz", "has_sig": false, "md5_digest": "e76556a1e09d00ce8b75796b89e0629a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13382, "upload_time": "2015-06-18T07:37:05", "url": "https://files.pythonhosted.org/packages/89/ef/9c8f3369d5f19a5d1f4a679369785c58ab5bc79de81f2dd941d1d7860ff3/dwebsocket-0.3.1.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "e24a2bce64351d16d2de687e755c8a91", "sha256": "610b63654f27f7cf877b93129a9cb9e97c6f82939c03a24090d9211d9b534ec3" }, "downloads": -1, "filename": "dwebsocket-0.4.1.tar.gz", "has_sig": false, "md5_digest": "e24a2bce64351d16d2de687e755c8a91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10426, "upload_time": "2015-08-11T02:16:13", "url": "https://files.pythonhosted.org/packages/a6/4a/8a2e5a9ff128b7406613cc1b2ed8c4b8d34d6bb5f534d91d973a92a5ec3a/dwebsocket-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "eb01a1b7ce3e9197a505c8be7491ae23", "sha256": "1384f99ba88df6c5867eb5ed3cd650e8b066f1f7584adfe1f6061ca42552cce6" }, "downloads": -1, "filename": "dwebsocket-0.4.2.tar.gz", "has_sig": false, "md5_digest": "eb01a1b7ce3e9197a505c8be7491ae23", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14219, "upload_time": "2015-08-11T02:31:20", "url": "https://files.pythonhosted.org/packages/eb/50/3f9b80ba03cf063c1d0cea4b599ff744d067ded8cbd6f92d108119a1b43c/dwebsocket-0.4.2.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "ea1c506b77d9f4cd3530cc2fa97a7118", "sha256": "cec65a81620f82682b00997d85132effed0f5767489e0feb0d87e30f242bc382" }, "downloads": -1, "filename": "dwebsocket-0.4.4.tar.gz", "has_sig": false, "md5_digest": "ea1c506b77d9f4cd3530cc2fa97a7118", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16620, "upload_time": "2018-09-24T16:52:22", "url": "https://files.pythonhosted.org/packages/51/20/16b9be3a820cce8561103f7ed52e57393530d19b3c73b662b045f051e630/dwebsocket-0.4.4.tar.gz" } ], "0.5.10": [ { "comment_text": "", "digests": { "md5": "13e319a84e50e67a8fbd52591aaee562", "sha256": "b6b6f0a87d297ccc1f9515454a92090bcde6918f4d9fdcae8f1fca6d5b8b1d18" }, "downloads": -1, "filename": "dwebsocket-0.5.10-py3.7.egg", "has_sig": false, "md5_digest": "13e319a84e50e67a8fbd52591aaee562", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 26670, "upload_time": "2018-11-30T11:34:19", "url": "https://files.pythonhosted.org/packages/0c/f2/6b829bde949ecaa9d7e5b989960efc7b93c59d3f11d585cdce47f6b9baae/dwebsocket-0.5.10-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "cdaea67b0006adf5def3082654c29f69", "sha256": "a21ac33768e374c6c8502403530a5b8f269241979903e7fc33e7236e7454a9f0" }, "downloads": -1, "filename": "dwebsocket-0.5.10.tar.gz", "has_sig": false, "md5_digest": "cdaea67b0006adf5def3082654c29f69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16707, "upload_time": "2018-11-30T11:34:15", "url": "https://files.pythonhosted.org/packages/6f/9a/1775317442429625d060ba4eb044560394992e4b2407ebb3ee0f8b00b3e5/dwebsocket-0.5.10.tar.gz" } ], "0.5.11": [ { "comment_text": "", "digests": { "md5": "907046f943d2e1a915f469651e1893ae", "sha256": "3dc3358c93cee5d20f8e6a7f37c7c4fd6ce82eb92bb31068a689d1499f1f86a5" }, "downloads": -1, "filename": "dwebsocket-0.5.11.tar.gz", "has_sig": false, "md5_digest": "907046f943d2e1a915f469651e1893ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16876, "upload_time": "2019-09-11T07:00:57", "url": "https://files.pythonhosted.org/packages/bf/94/7e33d4d2e8ad2e1b96ee071bf9e41383d9e4a45af74ae84949bb8634738e/dwebsocket-0.5.11.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "05d88beace5e34109800cd249ef107cb", "sha256": "6d65c6caec1e1ed19999f8e3e7224bcbed5182d33376239720204456f8ca5c6c" }, "downloads": -1, "filename": "dwebsocket-0.5.4.tar.gz", "has_sig": false, "md5_digest": "05d88beace5e34109800cd249ef107cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16636, "upload_time": "2018-09-24T18:30:53", "url": "https://files.pythonhosted.org/packages/93/a5/01b064d2219cb44ba75419abd026502fbfcb7cf7a52d12afd5f6a728f795/dwebsocket-0.5.4.tar.gz" } ], "0.5.5": [ { "comment_text": "", "digests": { "md5": "c3475f5cc213a38c35364d3c8e56b1b3", "sha256": "91bf767430d942b689b4a7f66b88088b98a02b39f75d371cae36325f927720af" }, "downloads": -1, "filename": "dwebsocket-0.5.5.tar.gz", "has_sig": false, "md5_digest": "c3475f5cc213a38c35364d3c8e56b1b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16646, "upload_time": "2018-10-15T15:05:25", "url": "https://files.pythonhosted.org/packages/6d/8f/f39b4f9370d3d28cfb7d4b259533aa5d4c3f46c0d803cf0fb91b046f1d4b/dwebsocket-0.5.5.tar.gz" } ], "0.5.6": [ { "comment_text": "", "digests": { "md5": "8ee807422eed03d1ed4121e18b4c9302", "sha256": "681a2fb081adb585604ae184dd309350ca5ef14ddfb81658dfcc3890d031f624" }, "downloads": -1, "filename": "dwebsocket-0.5.6.tar.gz", "has_sig": false, "md5_digest": "8ee807422eed03d1ed4121e18b4c9302", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16685, "upload_time": "2018-11-08T12:18:24", "url": "https://files.pythonhosted.org/packages/5a/fa/2cdf6ed9afdf74365749b40eb83b056868727a4c5ab160eb76c3c2a03947/dwebsocket-0.5.6.tar.gz" } ], "0.5.7": [ { "comment_text": "", "digests": { "md5": "06307d37e73d5bc49f662ff0363c5348", "sha256": "333956d8f5e7de98b2c4d9af9f6712d1cbd81a95040b5bac69e2d950fbde30dc" }, "downloads": -1, "filename": "dwebsocket-0.5.7-py3.7.egg", "has_sig": false, "md5_digest": "06307d37e73d5bc49f662ff0363c5348", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 26624, "upload_time": "2018-11-08T13:36:31", "url": "https://files.pythonhosted.org/packages/65/48/3c99cceec08dc84a21a078ed13b09695e6446a45b5d0756768c101d289ac/dwebsocket-0.5.7-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "8ad6561c2297743160d246979363d3a5", "sha256": "6f1b262a64511ca7c80f707dee8f6a4b34734364e66c38dcd4e93c661b8529db" }, "downloads": -1, "filename": "dwebsocket-0.5.7.tar.gz", "has_sig": false, "md5_digest": "8ad6561c2297743160d246979363d3a5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16682, "upload_time": "2018-11-08T13:36:28", "url": "https://files.pythonhosted.org/packages/1e/16/0ef0d4bc1344743b919ae9d386d05b7151afae1518957c647e83655025c6/dwebsocket-0.5.7.tar.gz" } ], "0.5.8": [ { "comment_text": "", "digests": { "md5": "3c6f01caedfec0661edf6764f6f32352", "sha256": "37b445543ed029eacf1df87dd4bf3bf685252e83bbde77c869d82f2eb9d9eb12" }, "downloads": -1, "filename": "dwebsocket-0.5.8-py3.7.egg", "has_sig": false, "md5_digest": "3c6f01caedfec0661edf6764f6f32352", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 26651, "upload_time": "2018-11-08T14:00:01", "url": "https://files.pythonhosted.org/packages/77/df/5710ffb37cf63d7a642abf89ebaa914f2b8a199ee12f0b32f4d692e139c9/dwebsocket-0.5.8-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "ba4639e01f175a126e6d34c14c0df1f1", "sha256": "e18618d610b552809bcb63a3da7650d326932ac62e56ee5127c6ee5b369f1188" }, "downloads": -1, "filename": "dwebsocket-0.5.8.tar.gz", "has_sig": false, "md5_digest": "ba4639e01f175a126e6d34c14c0df1f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16681, "upload_time": "2018-11-08T13:59:57", "url": "https://files.pythonhosted.org/packages/9c/d2/53519a61f5a8dee295c1194dd436a48fafff194402ae3e9ef4260c9a1fbe/dwebsocket-0.5.8.tar.gz" } ], "0.5.9": [ { "comment_text": "", "digests": { "md5": "12e5aa9dd1b0d99044863396f8723e6d", "sha256": "4c3214ad5b449377698d2e13343d3019671da2b2d0633220d48d747f17658f20" }, "downloads": -1, "filename": "dwebsocket-0.5.9-py2.7.egg", "has_sig": false, "md5_digest": "12e5aa9dd1b0d99044863396f8723e6d", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 26094, "upload_time": "2018-11-09T05:03:47", "url": "https://files.pythonhosted.org/packages/bf/4e/ccebb3aa80cf0cbe2726a4ae62baf0558da06215bf937509db47fc96d6cf/dwebsocket-0.5.9-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "327ad76dd4c02c8ecb7bb8bd2c6ce109", "sha256": "84910dc50a0e418346f20c8ae66d68780b6a425f447cc0015e0677045e7afb5e" }, "downloads": -1, "filename": "dwebsocket-0.5.9.tar.gz", "has_sig": false, "md5_digest": "327ad76dd4c02c8ecb7bb8bd2c6ce109", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16711, "upload_time": "2018-11-09T05:03:43", "url": "https://files.pythonhosted.org/packages/25/2c/39084ea66e86372a9bc5cfb4ddcb7e498c35ee3189ad505001442f3b96a0/dwebsocket-0.5.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "907046f943d2e1a915f469651e1893ae", "sha256": "3dc3358c93cee5d20f8e6a7f37c7c4fd6ce82eb92bb31068a689d1499f1f86a5" }, "downloads": -1, "filename": "dwebsocket-0.5.11.tar.gz", "has_sig": false, "md5_digest": "907046f943d2e1a915f469651e1893ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16876, "upload_time": "2019-09-11T07:00:57", "url": "https://files.pythonhosted.org/packages/bf/94/7e33d4d2e8ad2e1b96ee071bf9e41383d9e4a45af74ae84949bb8634738e/dwebsocket-0.5.11.tar.gz" } ] }