You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Miguel Grinberg 0e47a75a3a minor message queue documentation improvements 9 years ago
docs minor message queue documentation improvements 9 years ago
examples Cleaned up the interface to provide a custom client manager 10 years ago
socketio correct kombu implementation of a fanout queue 9 years ago
tests do not allow callbacks outside of a server context 9 years ago
.gitignore Initial commit 10 years ago
.travis.yml Added python 3.5 to the tox build 10 years ago
LICENSE Fixed executable bit on several files 10 years ago
MANIFEST.in Added build files 10 years ago
README.rst Merge pull request #9 from miguelgrinberg/multiple-workers 9 years ago
setup.py Release 0.8.2 9 years ago
tox.ini Added python 3.5 to the tox build 10 years ago

README.rst

python-socketio
===============

.. image:: https://travis-ci.org/miguelgrinberg/python-socketio.svg?branch=master
:target: https://travis-ci.org/miguelgrinberg/python-socketio

Python implementation of the `Socket.IO`_ realtime server.

Features
--------

- Fully compatible with the
`Javascript <https://github.com/Automattic/socket.io-client>`_,
`Swift <https://github.com/socketio/socket.io-client-swift>`_,
`C++ <https://github.com/socketio/socket.io-client-cpp>`_ and
`Java <https://github.com/socketio/socket.io-client-java>`_ official
Socket.IO clients, plus any third party clients that comply with the
Socket.IO specification.
- Compatible with Python 2.7 and Python 3.3+.
- Supports large number of clients even on modest hardware when used with an
asynchronous server based on `eventlet <http://eventlet.net/>`_ or
`gevent <http://gevent.org/>`_. For development and testing, any WSGI
complaint multi-threaded server can be used.
- Includes a WSGI middleware that integrates Socket.IO traffic with standard
WSGI applications.
- Broadcasting of messages to all connected clients, or to subsets of them
assigned to "rooms".
- Optional support for multiple servers, connected through a messaging queue
such as Redis or RabbitMQ.
- Send messages to clients from external processes, such as Celery workers or
auxiliary scripts.
- Event-based architecture implemented with decorators that hides the details
of the protocol.
- Support for HTTP long-polling and WebSocket transports.
- Support for XHR2 and XHR browsers.
- Support for text and binary messages.
- Support for gzip and deflate HTTP compression.
- Configurable CORS responses, to avoid cross-origin problems with browsers.

Example
-------

The following application uses Flask to serve the HTML/Javascript to the
client:

::

import socketio
import eventlet
from flask import Flask, render_template

sio = socketio.Server()
app = Flask(__name__)

@app.route('/')
def index():
"""Serve the client-side application."""
return render_template('index.html')

@sio.on('connect', namespace='/chat')
def connect(sid, environ):
print("connect ", sid)

@sio.on('chat message', namespace='/chat')
def message(sid, data):
print("message ", data)
sio.emit(sid, 'reply')

@sio.on('disconnect', namespace='/chat')
def disconnect(sid):
print('disconnect ', sid)

if __name__ == '__main__':
# wrap Flask application with engineio's middleware
app = socketio.Middleware(sio, app)

# deploy as an eventlet WSGI server
eventlet.wsgi.server(eventlet.listen(('', 8000)), app)

Resources
---------

- `Documentation`_
- `PyPI`_

.. _Socket.IO: https://github.com/Automattic/socket.io
.. _socket.io-client: https://github.com/Automattic/socket.io-client
.. _Eventlet: http://eventlet.net/
.. _Documentation: http://pythonhosted.org/python-socketio
.. _PyPI: https://pypi.python.org/pypi/python-socketio