Skip to main content

Prat fork of Jeffrey Gelen's gevent Websocket handler

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 and ujson or simplejson:

$ pip install wsaccel ujson

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

prat-geventwebsocket-0.9.5.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file prat-geventwebsocket-0.9.5.tar.gz.

File metadata

File hashes

Hashes for prat-geventwebsocket-0.9.5.tar.gz
Algorithm Hash digest
SHA256 6babbe39212748dbd123e70f17d7c5150829c775c638910bd61211374ea541f1
MD5 e1dc6404ba3461c2e1f09b79c3750592
BLAKE2b-256 ccfaa20f5e990457a75bf059edc8ea43a6590a4abc223680a72efe7a3dedd427

See more details on using hashes here.

File details

Details for the file prat-geventwebsocket-0.9.5.macosx-10.11-x86_64.tar.gz.

File metadata

File hashes

Hashes for prat-geventwebsocket-0.9.5.macosx-10.11-x86_64.tar.gz
Algorithm Hash digest
SHA256 fb0d1192f17b407fa7f26404621357780bd017a099590035aab532f1e6438d91
MD5 f79dcafbbd4ce0df1d7885cb70cbb733
BLAKE2b-256 f4280294cb3e95fce5aa15734723f383e4d6df4e626b920dfc76885425f342e8

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