Skip to main content

Engine.IO server

Project description

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

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, aiohttp or tornado), 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:

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:

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

Project details


Release history Release notifications | RSS feed

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.3.0.tar.gz (24.4 kB view details)

Uploaded Source

Built Distribution

python_engineio-2.3.0-py2.py3-none-any.whl (30.6 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: python-engineio-2.3.0.tar.gz
  • Upload date:
  • Size: 24.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0

File hashes

Hashes for python-engineio-2.3.0.tar.gz
Algorithm Hash digest
SHA256 eb4d28b7c6ae053f7ed50e688011b228ce8354dfdbf032220b76b3fc20d5f943
MD5 d281583ae81bcaa4acc4bd6fd4faab86
BLAKE2b-256 f16f3b872dce14b381b2724d33cf9133c6d3e599f1e85e1f8ab75b01d243bf9e

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: python_engineio-2.3.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 30.6 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0

File hashes

Hashes for python_engineio-2.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 7461abbfbe49fe877ac7daa160ee9f812a9d9d1d679c68360b4e2aa05348b8bd
MD5 9d7d57d9008ef4c4cf17e91972070ddd
BLAKE2b-256 59b3eaf1db595ae60faf7fd3e2fe9da908112b4f4a63877f5ca98295fa846bae

See more details on using hashes here.

Provenance

Supported by

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