Skip to main content

Websocket handler for the gevent pywsgi server, a Python network library

Project description

gevent-websocket is a WebSocket library for the gevent networking library.

Features include:

  • Integration on both socket level or using an abstract interface.

  • RPC and PubSub framework using WAMP (WebSocket Application Messaging Protocol).

  • Easily extendible using a simple WebSocket protocol plugin API

from geventwebsocket import WebSocketServer, WebSocketApplication, Resource

class EchoApplication(WebSocketApplication):
    def on_open(self):
        print "Connection opened"

    def on_message(self, message):
        self.ws.send(message)

    def on_close(self, reason):
        print reason

WebSocketServer(
    ('', 8000),
    Resource({'/': EchoApplication})
).serve_forever()

or a low level implementation:

from gevent import pywsgi
from geventwebsocket.handler import WebSocketHandler

def websocket_app(environ, start_response):
    if environ["PATH_INFO"] == '/echo':
        ws = environ["wsgi.websocket"]
        message = ws.receive()
        ws.send(message)

server = pywsgi.WSGIServer(("", 8000), websocket_app,
    handler_class=WebSocketHandler)
server.serve_forever()

More examples can be found in the examples directory. Hopefully more documentation will be available soon.

Installation

The easiest way to install gevent-websocket is directly from PyPi using pip or setuptools by running the commands below:

$ pip install gevent-websocket

Gunicorn Worker

Using Gunicorn it is even more easy to start a server. Only the websocket_app from the previous example is required to start the server. Start Gunicorn using the following command and worker class to enable WebSocket funtionality for the application.

gunicorn -k "geventwebsocket.gunicorn.workers.GeventWebSocketWorker" wsgi:websocket_app

Performance

gevent-websocket is pretty fast, but can be accelerated further by installing wsaccel:

$ pip install wsaccel

gevent-websocket automatically detects wsaccell and uses the Cython implementation for UTF8 validation and later also frame masking and demasking.

Get in touch

Get in touch on IRC #gevent on Freenode or on the Gevent mailinglist. Issues can be created on Bitbucket.

Project details


Download files

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

Source Distribution

gevent-websocket-0.9.2.tar.gz (16.4 kB view details)

Uploaded Source

Built Distribution

gevent_websocket-0.9.2-py27-none-any.whl (21.0 kB view details)

Uploaded Python 2.7

File details

Details for the file gevent-websocket-0.9.2.tar.gz.

File metadata

File hashes

Hashes for gevent-websocket-0.9.2.tar.gz
Algorithm Hash digest
SHA256 091f7fdf3c288d353f381d5660efbf14586099ef3a17f3579370905ce4ff0b13
MD5 cacff3ed741a8421ccf15511932443a9
BLAKE2b-256 3c6750950b7f0434adc7f50d39b2bd64c4f4f66695b428dd68191da22b1d1c58

See more details on using hashes here.

File details

Details for the file gevent_websocket-0.9.2-py27-none-any.whl.

File metadata

File hashes

Hashes for gevent_websocket-0.9.2-py27-none-any.whl
Algorithm Hash digest
SHA256 85b8204ef73c1f41cb2cc467a61b0948ed0e681ff24d38a8f8a6674ae8a7f6e1
MD5 e9a45ab486064a2a4f352243de553e00
BLAKE2b-256 9b6eb50428b363e8648735a585841959d6a6c97703b833cc52a356f94f1a7d68

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