Skip to main content

Karellen Gevent Websocket Library

Project description

Karellen Gevent Websocket Library

This is a Karellen fork of gevent-websocket. The goal of this fork is to maintain the project to support Python 3.5+ and latest WS standards errata.

karellen-geventws 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 karellen-geventws is directly from PyPi using pip or setuptools by running the commands below:

$ pip install karellen-geventws

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

karellen-geventws is pretty fast, but can be accelerated further by installing wsaccel and ujson or `simplejson`:

$ pip install wsaccel ujson

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

Get in touch

The fork parent is located at gevent-websocket.

Issues can be created on GitHub.

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

karellen-geventws-1.0.0.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

karellen_geventws-1.0.0-py3-none-any.whl (21.3 kB view details)

Uploaded Python 3

File details

Details for the file karellen-geventws-1.0.0.tar.gz.

File metadata

File hashes

Hashes for karellen-geventws-1.0.0.tar.gz
Algorithm Hash digest
SHA256 52c2ee8110d66b2b577ed08156c7a27820ceeb763ce897f07efc9cdd4379e72e
MD5 6b13a25cb6472817f4eabf672f5cc4ff
BLAKE2b-256 0e7f7df9ebab4c49e08e5a880fd0bf55d1c7fb5869c91221b17a2f46a61168be

See more details on using hashes here.

File details

Details for the file karellen_geventws-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for karellen_geventws-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 50cebe214be0a61c59bfe0cf5b0dedb1e672829b7c90289e1f1f02046b92a402
MD5 8aa1ecb7be6b8c769219c5e1d1d30457
BLAKE2b-256 75ed791570f45e1de27045ec3e1cf02f4948f1a070ca1d3a202cefc688f32f24

See more details on using hashes here.

Supported by

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