skip to navigation
skip to content

python-engineio 2.0.4

Engine.IO server

Package Documentation


.. image::

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


- Fully compatible with the Javascript ``_ library, versions 1.5.0 and up.
- 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 `asyncio`_(`sanic`_ or `aiohttp`_), `eventlet`_ or `gevent`_. For development and testing, any WSGI compliant multi-threaded server can be used.
- Includes a WSGI middleware that integrates Engine.IO traffic with standard WSGI applications.
- Uses an event-based architecture implemented with decorators that hides the details of the protocol.
- Implements HTTP long-polling and WebSocket transports.
- Supports XHR2 and XHR browsers as clients.
- Supports text and binary messages.
- Supports gzip and deflate HTTP compression.
- Configurable CORS responses to avoid cross-origin problems with browsers.


The following application uses the Eventlet asynchronous server, and includes a
small Flask application that serves the HTML/Javascript to the client:

.. code:: python

import engineio
import eventlet
import eventlet.wsgi
from flask import Flask, render_template

eio = engineio.Server()
app = Flask(__name__)

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

def connect(sid, environ):
print("connect ", sid)

def message(sid, data):
print("message ", data)
eio.send(sid, 'reply')

def disconnect(sid):
print('disconnect ', sid)

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

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

And below is a similar example, coded for asyncio (Python 3.5+ only) with the
`aiohttp`_ framework:

.. code:: python

from aiohttp import web
import engineio

eio = engineio.AsyncServer()
app = web.Application()

async def index(request):
"""Serve the client-side application."""
with open('index.html') as f:
return web.Response(, content_type='text/html')

def connect(sid, environ):
print("connect ", sid)

async def message(sid, data):
print("message ", data)
await eio.send(sid, 'reply')

def disconnect(sid):
print('disconnect ', sid)

app.router.add_static('/static', 'static')
app.router.add_get('/', index)

if __name__ == '__main__':


- `Documentation`_
- `PyPI`_

.. _Engine.IO:
.. _asyncio:
.. _sanic:
.. _aiohttp:
.. _eventlet:
.. _gevent:
.. _aiohttp:
.. _Documentation:
.. _PyPI:
File Type Py Version Uploaded on Size
python-engineio-2.0.4.tar.gz (md5) Source 2018-03-13 23KB
python_engineio-2.0.4-py2.py3-none-any.whl (md5) Python Wheel 3.6 2018-03-13 29KB