Skip to main content

Engine.IO server

Project description

python-engineio
===============

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

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

Features
--------

- Fully compatible with the Javascript `engine.io-client`_ 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.

Examples
--------

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__)

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

@eio.on('connect')
def connect(sid, environ):
print("connect ", sid)

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

@eio.on('disconnect')
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()
eio.attach(app)

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

@eio.on('connect')
def connect(sid, environ):
print("connect ", sid)

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

@eio.on('disconnect')
def disconnect(sid):
print('disconnect ', sid)

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

if __name__ == '__main__':
web.run_app(app)

Resources
---------

- `Documentation`_
- `PyPI`_

.. _Engine.IO: https://github.com/Automattic/engine.io
.. _engine.io-client: https://github.com/Automattic/engine.io-client
.. _asyncio: https://docs.python.org/3/library/asyncio.html
.. _sanic: http://sanic.readthedocs.io/
.. _aiohttp: http://aiohttp.readthedocs.io/
.. _eventlet: http://eventlet.net/
.. _gevent: http://gevent.org/
.. _aiohttp: http://aiohttp.readthedocs.io/
.. _Documentation: http://pythonhosted.org/python-engineio
.. _PyPI: https://pypi.python.org/pypi/python-engineio

Project details


Release history Release notifications | RSS feed

This version

2.0.3

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python-engineio-2.0.3.tar.gz (23.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_engineio-2.0.3-py2.py3-none-any.whl (29.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file python-engineio-2.0.3.tar.gz.

File metadata

File hashes

Hashes for python-engineio-2.0.3.tar.gz
Algorithm Hash digest
SHA256 e7d1e2e43310bc22ae1e42a32b33e3481df0055ab265fe4ec41fcc30af30be00
MD5 fcd1cc0eea279ed467225e0f2f5f4028
BLAKE2b-256 72042b24291c081ab6a702e2ab95f8121bcb6c94f87096ca5eb9cb1e13551960

See more details on using hashes here.

File details

Details for the file python_engineio-2.0.3-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for python_engineio-2.0.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a6c016c52e72ccea3fb9783108c0459dbbfb9a1647c23e96e44e5d5387eb2fd3
MD5 602421c6606ad23c5e02f595e9b4d37d
BLAKE2b-256 5261421395b4b443fa44a796b8bdc909e383d36f01d7c4b45f10c01b620ae29e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page