{ "info": { "author": "Stephen McDonald", "author_email": "steve@jupo.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: POSIX", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: HTTP Servers", "Topic :: Internet :: WWW/HTTP :: WSGI" ], "description": ".. image:: https://secure.travis-ci.org/stephenmcd/django-socketio.png?branch=master\n :target: http://travis-ci.org/#!/stephenmcd/django-socketio\n\nCreated by `Stephen McDonald `_\n\nState of django-socketio\n========================\n\ndjango-socketio is currently bound to socket.io 0.6, which is considerably\nout of date. It's fully functional, but some browsers now have newer\nimplentations of WebSockets, and so alternative socket.io transports are\nfallen back to in these cases.\n\nWork is currently underway to bring django-socketio up to date with the\nlatest gevent-socktio, which has just recently started to support\nsocket.io 0.8\n\nFollow this thread for more info:\n\nhttps://github.com/stephenmcd/django-socketio/issues/19\n\nIntroduction\n============\n\ndjango-socketio is a `BSD licensed`_ `Django`_ application that\nbrings together a variety of features that allow you to use\n`WebSockets`_ seamlessly with any Django project.\n\ndjango-socketio was inspired by `Cody Soyland`_'s introductory\n`blog post`_ on using `Socket.IO`_ and `gevent`_ with Django, and\nmade possible by the work of `Jeffrey Gelens'`_ `gevent-websocket`_\nand `gevent-socketio`_ packages.\n\nThe features provided by django-socketio are:\n\n * Installation of required packages from `PyPI`_\n * A management command for running gevent's pywsgi server with\n auto-reloading capabilities\n * A channel subscription and broadcast system that extends\n Socket.IO allowing WebSockets and events to be partitioned into\n separate concerns\n * A `signals`_-like event system that abstracts away the various\n stages of a Socket.IO request\n * Support for out-of-band (non-event) broadcasts\n * The required views, urlpatterns, templatetags and tests for all\n the above\n\nUpgrading\n=========\n\nPrior to version 0.3, the message argument sent to each of the event\nhandlers was always a Python list, regardless of the data type that\nwas used for sending data. As of 0.3, the message argument matches the\ndata type being sent via JavaScript.\n\nInstallation\n============\n\nNote that if you've never installed gevent, you'll first need to\ninstall the libevent development library. You may also need the Python\ndevelopment library if not installed. This can be achieved on Debian\nbased sytems with the following commands::\n\n $ sudo apt-get install python-dev\n $ sudo apt-get install libevent-dev\n\nor on OSX using `Homebrew`_ (with Xcode installed)::\n\n $ brew install libevent\n $ export CFLAGS=-I/brew/include\n\nor on OSX using `macports`::\n\n $ sudo port install libevent\n $ CFLAGS=\"-I /opt/local/include -L /opt/local/lib\" pip install django-socketio\n\nThe easiest way to install django-socketio is directly from PyPi using\n`pip`_ by running the following command, which will also attempt to\ninstall the dependencies mentioned above::\n\n $ pip install -U django-socketio\n\nOtherwise you can download django-socketio and install it directly\nfrom source::\n\n $ python setup.py install\n\nOnce installed you can then add ``django_socketio`` to your\n``INSTALLED_APPS`` and ``django_socketio.urls`` to your url conf::\n\n urlpatterns = patterns('',\n url(\"\", include('django_socketio.urls')),\n )\n\nThe client-side JavaScripts for Socket.IO and its extensions can then\nbe added to any page with the ``socketio`` templatetag::\n\n \n {% load socketio_tags %}\n {% socketio %}\n \n \n\nRunning\n=======\n\nThe ``runserver_socketio`` management command is provided which will\nrun gevent's pywsgi server which is required for supporting the type of\nlong-running request a WebSocket will use::\n\n $ python manage.py runserver_socketio host:port\n\nNote that the host and port can also configured by defining the following\nsettings in your project's settings module:\n\n * ``SOCKETIO_HOST`` - The host to bind the server to.\n * ``SOCKETIO_PORT`` - The numeric port to bind the server to.\n\nThese settings are only used when their values are not specified as\narguments to the ``runserver_socketio`` command, which always takes\nprecedence.\n\n.. note::\n\n On UNIX-like systems, in order for the ``flashsocket`` transport\n fallback to work, root privileges (eg by running the above command\n with ``sudo``) are required when running the server. This is due to\n the `Flash Policy Server`_ requiring access to a `low port`_ (843).\n This isn't strictly required for everything to work correctly, as\n the ``flashsocket`` transport is only used as one of several\n fallbacks when WebSockets aren't supported by the browser.\n\nWhen running the ``runserver_socketio`` command in production, you'll\nmost likely want to use some form of process manager, like\n`Supervisor`_ or any of the other alternatives.\n\nChannels\n========\n\nThe WebSocket implemented by gevent-websocket provides two methods for\nsending data to other clients, ``socket.send`` which sends data to the\ngiven socket instance, and ``socket.broadcast`` which sends data to all\nsocket instances other than itself.\n\nA common requirement for WebSocket based applications is to divide\ncommunications up into separate channels. For example a chat site may\nhave multiple chat rooms and rather than using ``broadcast`` which\nwould send a chat message to all chat rooms, each room would need a\nreference to each of the connected sockets so that ``send`` can be\ncalled on each socket when a new message arrives for that room.\n\ndjango-socketio extends Socket.IO both on the client and server to\nprovide channels that can be subscribed and broadcast to.\n\nTo subscribe to a channel client-side in JavaScript use the\n``socket.subscribe`` method::\n\n var socket = new io.Socket();\n socket.connect();\n socket.on('connect', function() {\n socket.subscribe('my channel');\n });\n\nOnce the socket is subscribed to a channel, you can then\nbroadcast to the channel server-side in Python using the\n``socket.broadcast_channel`` method::\n\n socket.broadcast_channel(\"my message\")\n\nBroadcast and Send Methods\n==========================\n\nEach server-side socket instance contains a handful of methods\nfor sending data. As mentioned above, the first two methods are\nimplemented by `gevent-socketio`_:\n\n * ``socket.send(message)`` - Sends the given message directly to\n the socket.\n * ``socket.broadcast(message)`` - Sends the given message to all\n other sockets.\n\nThe remaning methods are implemented by django-socketio.\n\n * ``socket.broadcast_channel(message, channel=None)`` - Sends the\n given message to all other sockets that are subscribed to the\n given channel. If no channel is given, all channels that the\n socket is subscribed to are used.\n the socket.\n * ``socket.send_and_broadcast(message)`` - Shortcut that sends the\n message to all sockets, including the sender.\n * ``socket.send_and_broadcast_channel(message, channel=None)``\n - Shortcut that sends the message to all sockets for the given\n channel, including the sender.\n\nThe following methods can be imported directly from\n``django_socketio`` for broadcasting and sending out-of-band (eg: not\nin response to a socket event). These methods map directly to the same\nmethods on a socket instance, and in each case an appropriate connected\nsocket will be chosen to use for sending the message, and the\n``django_socketio.NoSocket`` exception will be raised if no connected\nsockets exist.\n\n * ``django_socketio.broadcast(message)``\n * ``django_socketio.broadcast_channel(message, channel)``\n * ``django_socketio.send(session_id, message)``\n\nNote that with the ``send`` method, the socket is identified by its\nsession ID, accessible via ``socket.session.session_id``. This is a\nWebSocket session ID and should not be confused with a Django session\nID which is different.\n\nEvents\n======\n\nThe ``django_socketio.events`` module provides a handful of events\nthat can be subscribed to, very much like connecting receiver\nfunctions to Django signals. Each of these events are raised\nthroughout the relevant stages of a Socket.IO request. These events\nrepresent the main approach for implementing your socket handling\nlogic when using django-socketio.\n\nEvents are subscribed to by applying each event as a decorator\nto your event handler functions::\n\n from django_socketio.events import on_message\n\n @on_message\n def my_message_handler(request, socket, context, message):\n ...\n\nWhere should these event handlers live in your Django project? They\ncan go anywhere, so long as they're imported by Django at startup\ntime. To ensure that your event handlers are always loaded, you can\nput them into a module called ``events.py`` in one of your apps listed\nin Django's ``INSTALLED_APPS`` setting. django-socketio looks for these\nmodules, and will always import them to ensure your event handlers are\nloaded.\n\nEach event handler takes at least three arguments: the current Django\n``request``, the Socket.IO ``socket`` the event occurred for, and a\n``context``, which is simply a dictionary that can be used to persist\nvariables across all events throughout the life-cycle of a single\nWebSocket connection.\n\n * ``on_connect(request, socket, context)`` - occurs once when the\n WebSocket connection is first established.\n * ``on_message(request, socket, context, message)`` - occurs every\n time data is sent to the WebSocket. Takes an extra ``message``\n argument which contains the data sent.\n * ``on_subscribe(request, socket, context, channel)`` - occurs when\n a channel is subscribed to. Takes an extra ``channel`` argument\n which contains the channel subscribed to.\n * ``on_unsubscribe(request, socket, context, channel)`` - occurs\n when a channel is unsubscribed from. Takes an extra ``channel``\n argument which contains the channel unsubscribed from.\n * ``on_error(request, socket, context, exception)`` - occurs when\n an error is raised. Takes an extra ``exception`` argument which\n contains the exception for the error.\n * ``on_disconnect(request, socket, context)`` - occurs once when\n the WebSocket disconnects.\n * ``on_finish(request, socket, context)`` - occurs once when the\n Socket.IO request is finished.\n\nLike Django signals, event handlers can be defined anywhere so long\nas they end up being imported. Consider adding them to their own\nmodule that gets imported by your urlconf, or even adding them to\nyour views module since they're conceptually similar to views.\n\nBinding Events to Channels\n==========================\n\nAll events other than the ``on_connect`` event can also be bound to\nparticular channels by passing a ``channel`` argument to the event\ndecorator. The channel argument can contain a regular expression\npattern used to match again multiple channels of similar function.\n\nFor example, suppose you implemented a chat site with multiple rooms.\nWebSockets would be the basis for users communicating within each\nchat room, however you may want to use them elsewhere throughout the\nsite for different purposes, perhaps for a real-time admin dashboard.\nIn this case there would be two distinct WebSocket uses, with the chat\nrooms each requiring their own individual channels.\n\nSuppose each chat room user subscribes to a channel client-side\nusing the room's ID::\n\n var socket = new io.Socket();\n var roomID = 42;\n socket.connect();\n socket.on('connect', function() {\n socket.subscribe('room-' + roomID);\n });\n\nThen server-side the different message handlers are bound to each\ntype of channel::\n\n @on_message(channel=\"dashboard\")\n def my_dashboard_handler(request, socket, context, message):\n ...\n\n @on_message(channel=\"^room-\")\n def my_chat_handler(request, socket, context, message):\n ...\n\nLogging\n=======\n\nThe following setting can be used to configure logging:\n\n * ``SOCKETIO_MESSAGE_LOG_FORMAT`` - A format string used for logging\n each message sent via a socket. The string is formatted using\n interpolation with a dictionary. The dictionary contains all the\n keys found in Django's ``request[\"META\"]``, as well as ``TIME``\n and ``MESSAGE`` keys which contain the time of the message and\n the message contents respectively. Set this setting to ``None``\n to disable message logging.\n\nChat Demo\n=========\n\nThe \"hello world\" of WebSocket applications is naturally the chat\nroom. As such django-socketio comes with a demo chat application\nthat provides examples of the different events, channel and broadcasting\nfeatures available. The demo can be found in the ``example_project``\ndirectory of the ``django_socketio`` package. Note that Django 1.3 or\nhigher is required for the demo as it makes use of Django 1.3's\n``staticfiles`` app.\n\n.. _`BSD licensed`: http://www.linfo.org/bsdlicense.html\n.. _`Django`: http://djangoproject.com/\n.. _`WebSockets`: http://en.wikipedia.org/wiki/WebSockets\n.. _`Cody Soyland`: http://codysoyland.com/\n.. _`blog post`: http://codysoyland.com/2011/feb/6/evented-django-part-one-socketio-and-gevent/\n.. _`Socket.IO`: http://socket.io/\n.. _`Jeffrey Gelens'`: http://www.gelens.org/\n.. _`gevent`: http://www.gevent.org/\n.. _`gevent-websocket`: https://bitbucket.org/Jeffrey/gevent-websocket/\n.. _`gevent-socketio`: https://bitbucket.org/Jeffrey/gevent-socketio/\n.. _`PyPI`: http://pypi.python.org/\n.. _`signals`: https://docs.djangoproject.com/en/dev/topics/signals/\n.. _`Homebrew`: http://mxcl.github.com/homebrew/\n.. _`pip`: http://www.pip-installer.org/\n.. _`Supervisor`: http://supervisord.org/\n.. _`Flash Policy Server`: http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html\n.. _`low port`: http://www.staldal.nu/tech/2007/10/31/why-can-only-root-listen-to-ports-below-1024/", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/stephenmcd/django-socketio", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "django-socketio", "package_url": "https://pypi.org/project/django-socketio/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-socketio/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/stephenmcd/django-socketio" }, "release_url": "https://pypi.org/project/django-socketio/0.3.9/", "requires_dist": null, "requires_python": null, "summary": "A Django app providing the features required to use websockets with Django via Socket.IO", "version": "0.3.9" }, "last_serial": 960753, "releases": { "0.0.0": [], "0.1.0": [ { "comment_text": "", "digests": { "md5": "1bfa04ecbe466f7f1d14cdaf0161355a", "sha256": "070590d4e56b40b54d3ffdd81c8ba19ce69c9e572618683da1036f56f5febcd3" }, "downloads": -1, "filename": "django-socketio-0.1.0.tar.gz", "has_sig": false, "md5_digest": "1bfa04ecbe466f7f1d14cdaf0161355a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11878, "upload_time": "2011-08-13T05:51:22", "url": "https://files.pythonhosted.org/packages/d7/19/9548f7e17cb1c7dd59d308d93d87a09d104be18de8d3ee0fa3309799855d/django-socketio-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "3ec653343162b8610ac08c14187199fb", "sha256": "b2d84e11c02680178710d0736faef06232b3a25e983bef6da935b1ef4e1afef6" }, "downloads": -1, "filename": "django-socketio-0.1.1.tar.gz", "has_sig": false, "md5_digest": "3ec653343162b8610ac08c14187199fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49341, "upload_time": "2011-08-14T15:02:55", "url": "https://files.pythonhosted.org/packages/d4/d4/4f8bd6910e478b22c301775c2d527460ae875022c5e5cf3f83094ca689f6/django-socketio-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "772fad0fd6bcbfb479051679214d652b", "sha256": "f60cc4e60ac4579a59af659ff792cd50adbb50fe8730294287583abc25c3c158" }, "downloads": -1, "filename": "django-socketio-0.1.2.tar.gz", "has_sig": false, "md5_digest": "772fad0fd6bcbfb479051679214d652b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41075, "upload_time": "2011-08-20T04:38:37", "url": "https://files.pythonhosted.org/packages/ca/a6/087f3b2fcd0afda015e596c16afd82cf953076c3fecf05c10dd9c282a90a/django-socketio-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "b2f7678ded6938eb627e328d81404803", "sha256": "9a9401edaed9ff564869b13ff053b3b29e4ae77190696196f09b0a135590ce6d" }, "downloads": -1, "filename": "django-socketio-0.1.3.tar.gz", "has_sig": false, "md5_digest": "b2f7678ded6938eb627e328d81404803", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41928, "upload_time": "2011-08-21T09:26:03", "url": "https://files.pythonhosted.org/packages/81/92/7102fa80564b4636973311efa530f8e64b60c332d123354f4e856c2e1c40/django-socketio-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "d4fd1cb68399c97642da24ee854ac4a9", "sha256": "cbe5463f08996d01f6ddb417cbbc7d4dde88bcd262a4d4f6d9f4c641fa8bbee4" }, "downloads": -1, "filename": "django-socketio-0.1.4.tar.gz", "has_sig": false, "md5_digest": "d4fd1cb68399c97642da24ee854ac4a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41924, "upload_time": "2011-08-21T09:43:14", "url": "https://files.pythonhosted.org/packages/c4/55/247f14d578a404d99b91f8092da45262199a8f2841451216eb9ee5b10014/django-socketio-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "e0c53bc69445934809960b81edb2f5b7", "sha256": "d1253029ec15ca528a93d2773249bdd41cb7977d183a1d0a2dabcf5560235ce4" }, "downloads": -1, "filename": "django-socketio-0.1.5.tar.gz", "has_sig": false, "md5_digest": "e0c53bc69445934809960b81edb2f5b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33830, "upload_time": "2011-10-03T14:20:43", "url": "https://files.pythonhosted.org/packages/af/66/3a10b6e8caa60a7cfc8e7575992cf80362b912af30750276a66188c7ef35/django-socketio-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "c4a82d0796f3cb62d093008d4298ab88", "sha256": "4f8b0b35d0f31076a9154d63de152ccd8f9894d70d82a827fdb688ada448d6db" }, "downloads": -1, "filename": "django-socketio-0.1.6.tar.gz", "has_sig": false, "md5_digest": "c4a82d0796f3cb62d093008d4298ab88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33866, "upload_time": "2011-11-12T17:37:01", "url": "https://files.pythonhosted.org/packages/05/21/50990980c922857967ae7484474517353a17f6449b91cb02e656c1a87712/django-socketio-0.1.6.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "212c431ad32fe404d0395611ec0a56e2", "sha256": "21af7e38c7835acbb8cd57a8e71a30e675f5254adae6a99ccf48414705d0cf93" }, "downloads": -1, "filename": "django-socketio-0.2.tar.gz", "has_sig": false, "md5_digest": "212c431ad32fe404d0395611ec0a56e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39290, "upload_time": "2011-12-11T06:37:26", "url": "https://files.pythonhosted.org/packages/da/ad/26826f2628c28f6461361e51736441ec26a9b77dbd3e825cb854537e4f77/django-socketio-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "9512667ecd49952c843899fadae4e9d3", "sha256": "9a3c37f3972e7fa1d3f053031686c272e88f472d7b00f944f7a93d4cb110bc44" }, "downloads": -1, "filename": "django-socketio-0.2.1.tar.gz", "has_sig": false, "md5_digest": "9512667ecd49952c843899fadae4e9d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35312, "upload_time": "2011-12-14T21:04:35", "url": "https://files.pythonhosted.org/packages/33/3d/201c23f4b2a909e2a1f0042fe4d23cd71c5cdf41c899df46b4d08531f2b8/django-socketio-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "8e26d400ad6ba6f7417ff13896dda658", "sha256": "59c2de1e7b09ba2249993f0df718477d7a40de225a9893e4ebe7f57ffa625de0" }, "downloads": -1, "filename": "django-socketio-0.2.2.tar.gz", "has_sig": false, "md5_digest": "8e26d400ad6ba6f7417ff13896dda658", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49311, "upload_time": "2012-01-05T21:01:24", "url": "https://files.pythonhosted.org/packages/fe/5f/c195041ef5e094751554125a04165f26c63675ccb212d36de4deeee6498f/django-socketio-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "008417c8223dce57fd1d9a815ec7046e", "sha256": "ebeea0b06aced923857312e5fcaf7ae5759cb0795355af76c4b70283e1ef516d" }, "downloads": -1, "filename": "django-socketio-0.2.3.tar.gz", "has_sig": false, "md5_digest": "008417c8223dce57fd1d9a815ec7046e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40528, "upload_time": "2012-01-05T21:02:24", "url": "https://files.pythonhosted.org/packages/09/55/974043045a9e385bc30a14d794f751e87d6ceba474a0f4797e61a7996649/django-socketio-0.2.3.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "d1721e51965741ff80d774acf929ac40", "sha256": "8c5e0097a4537bde5ff5581f178250b24f4f3276901fa156f21602397e6b0dba" }, "downloads": -1, "filename": "django-socketio-0.3.0.tar.gz", "has_sig": false, "md5_digest": "d1721e51965741ff80d774acf929ac40", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41866, "upload_time": "2012-02-05T07:08:06", "url": "https://files.pythonhosted.org/packages/e1/d5/612717bc5efa15851568003005b6e8e9ad6349ca54891ccd0539c78717a0/django-socketio-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "3abb5d78d4030d4f9a14b1b61900ccfa", "sha256": "06099926ef36066f785b7fa184998d96cb6d4772232cb60a0b3d8ccdef1fec16" }, "downloads": -1, "filename": "django-socketio-0.3.1.tar.gz", "has_sig": false, "md5_digest": "3abb5d78d4030d4f9a14b1b61900ccfa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43972, "upload_time": "2012-02-16T02:30:37", "url": "https://files.pythonhosted.org/packages/a6/eb/8664b86d713bfbb453167652ef784bbc378ae5f125c23128c0d0b00fdef9/django-socketio-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "ea8910a733b1e3b3b44dc5c78de77aba", "sha256": "d3564af027e78c8e8fae8bfa246f10c11e526ef2d1e5b9de2ac03ef494d0166e" }, "downloads": -1, "filename": "django-socketio-0.3.2.tar.gz", "has_sig": false, "md5_digest": "ea8910a733b1e3b3b44dc5c78de77aba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41368, "upload_time": "2012-03-10T13:41:25", "url": "https://files.pythonhosted.org/packages/42/9c/28ce48ea813321310fd702df6943ca426873cffcf72cbbf3fa56a690a266/django-socketio-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "5ad4bc5e987fe002873867b492c9816e", "sha256": "d9071fa2f1a5f233063afe03e41dc4ab6e26e5559c724f25f0c719b0e4e47271" }, "downloads": -1, "filename": "django-socketio-0.3.3.tar.gz", "has_sig": false, "md5_digest": "5ad4bc5e987fe002873867b492c9816e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41701, "upload_time": "2012-04-03T14:04:49", "url": "https://files.pythonhosted.org/packages/f0/64/172ca897695f940a2c73fbb89237ae7bec5fd71485ea184690ceac5fddc5/django-socketio-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "b576080b893f4f5c0c486de2d9aaefa5", "sha256": "f03837eb0ec3ddd44be804cf97709c303fbf25cdcddeece495ed8a9ba1842c58" }, "downloads": -1, "filename": "django-socketio-0.3.4.tar.gz", "has_sig": false, "md5_digest": "b576080b893f4f5c0c486de2d9aaefa5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36629, "upload_time": "2012-07-20T14:21:47", "url": "https://files.pythonhosted.org/packages/80/fe/ea162d83c0c4c1d5abec03120ba9450c2c7991ca6743a379e2a29a3f1685/django-socketio-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "4df6a2d31bee876cae5d511e24ec707b", "sha256": "ccc70e7430ec16d9b17d0432a4bbd17657806c87ac3cc8168a9db9a06f9edf37" }, "downloads": -1, "filename": "django-socketio-0.3.5.tar.gz", "has_sig": false, "md5_digest": "4df6a2d31bee876cae5d511e24ec707b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36646, "upload_time": "2012-08-29T20:29:52", "url": "https://files.pythonhosted.org/packages/7f/ea/81c1e6b9c443d835c79ada7cc0e606a71ef471a996e2c4e9fd0083514392/django-socketio-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "908dd1326bcffc41ea161c6bbb846c18", "sha256": "df34c0b1ca56cab5f5277f054c937d3d76428e59f051f8bc804ceb2d99b752d0" }, "downloads": -1, "filename": "django-socketio-0.3.6.tar.gz", "has_sig": false, "md5_digest": "908dd1326bcffc41ea161c6bbb846c18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42494, "upload_time": "2013-04-05T17:11:05", "url": "https://files.pythonhosted.org/packages/3f/b9/98c08dcf3f0babd20dadd1869e406516c27761c1ea379b4e814a93391f0a/django-socketio-0.3.6.tar.gz" } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "3a30478ba62b1929a766405218847df0", "sha256": "e28bc48da1ab34868054bb23a18798c135cd4050a43cd18767dc39278d7b9d12" }, "downloads": -1, "filename": "django-socketio-0.3.7.tar.gz", "has_sig": false, "md5_digest": "3a30478ba62b1929a766405218847df0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42605, "upload_time": "2013-08-28T10:53:46", "url": "https://files.pythonhosted.org/packages/df/5a/c1a49ca2880295b3d551b295d7b0a09b7ff9ecb0df9f4c8ab477541f449e/django-socketio-0.3.7.tar.gz" } ], "0.3.8": [ { "comment_text": "", "digests": { "md5": "2797a44a6214002118ae8384b4c92506", "sha256": "6e33a4ccf631ac31cc23dfa885c3e67ed0b5b0e58010c3cd00d92a4ef073f3e7" }, "downloads": -1, "filename": "django-socketio-0.3.8.tar.gz", "has_sig": false, "md5_digest": "2797a44a6214002118ae8384b4c92506", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42565, "upload_time": "2013-09-22T05:42:06", "url": "https://files.pythonhosted.org/packages/4e/f4/13925b2d4053d4e528b87e203b3243405271d9bbfd182fd1ee0f2c64f54b/django-socketio-0.3.8.tar.gz" } ], "0.3.9": [ { "comment_text": "", "digests": { "md5": "8781a150d4b70856c2b571076ec400ef", "sha256": "c590559bb1cfc211fd83562f433e8961cb969e4d294c2617fcb07bec88aa610f" }, "downloads": -1, "filename": "django-socketio-0.3.9.tar.gz", "has_sig": false, "md5_digest": "8781a150d4b70856c2b571076ec400ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48005, "upload_time": "2014-01-04T22:42:47", "url": "https://files.pythonhosted.org/packages/a6/f6/1a55a293be3b3f0d63c9f0f13e1a00410029e0fbf7cc3eb2ba2355d31eac/django-socketio-0.3.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8781a150d4b70856c2b571076ec400ef", "sha256": "c590559bb1cfc211fd83562f433e8961cb969e4d294c2617fcb07bec88aa610f" }, "downloads": -1, "filename": "django-socketio-0.3.9.tar.gz", "has_sig": false, "md5_digest": "8781a150d4b70856c2b571076ec400ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48005, "upload_time": "2014-01-04T22:42:47", "url": "https://files.pythonhosted.org/packages/a6/f6/1a55a293be3b3f0d63c9f0f13e1a00410029e0fbf7cc3eb2ba2355d31eac/django-socketio-0.3.9.tar.gz" } ] }