Metadata-Version: 2.0 Name: python-engineio Version: 1.7.0 Summary: Engine.IO server Home-page: http://github.com/miguelgrinberg/python-engineio/ Author: Miguel Grinberg Author-email: miguelgrinberg50@gmail.com License: MIT Platform: any Classifier: Environment :: Web Environment Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 3 Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content Classifier: Topic :: Software Development :: Libraries :: Python Modules Requires-Dist: six (>=1.9.0) 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