Skip to main content

Socket.IO server

Project description

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

Python implementation of the Socket.IO realtime server.

Features

  • Fully compatible with the Javascript, Swift, C++ and 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 or gevent. 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

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-socketio-0.9.0.tar.gz (13.4 kB view details)

Uploaded Source

File details

Details for the file python-socketio-0.9.0.tar.gz.

File metadata

File hashes

Hashes for python-socketio-0.9.0.tar.gz
Algorithm Hash digest
SHA256 8e2c5fd08eb1ec0c3a9a1d455f2793304e59943b55e14504d14aaf79bd544593
MD5 04c40f7862370997f35d02e162b6e323
BLAKE2b-256 726cba313aa0a9b78eef3b6c73c6868f20869ab3d27de684b1638fb17625be66

See more details on using hashes here.

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