Skip to main content

gevent-websocket

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.

Metadata

Release files for prat-geventwebsocket 0.9.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for prat-geventwebsocket 0.9.5
File Size Uploaded Provenance Actions
prat-geventwebsocket-0.9.5.tar.gz 15.3 kB Without provenance Details for prat-geventwebsocket-0.9.5.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for prat-geventwebsocket 0.9.5
File Interpreter ABI Platform Actions
prat-geventwebsocket-0.9.5.macosx-10.11-x86_64.tar.gz Details for prat-geventwebsocket-0.9.5.macosx-10.11-x86_64.tar.gz

Total release size: 46.3 kB

Release files / prat-geventwebsocket-0.9.5.tar.gz

Download URL prat-geventwebsocket-0.9.5.tar.gz
Size 15.3 kB
Tags Source
SHA-256 checksum
How to use checksums
6babbe39212748dbd123e70f17d7c5150829c775c638910bd61211374ea541f1
BLAKE2b-256 checksum
How to use checksums
ccfaa20f5e990457a75bf059edc8ea43a6590a4abc223680a72efe7a3dedd427
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / prat-geventwebsocket-0.9.5.macosx-10.11-x86_64.tar.gz

Download URL prat-geventwebsocket-0.9.5.macosx-10.11-x86_64.tar.gz
Size 31.0 kB
Tags Source
SHA-256 checksum
How to use checksums
fb0d1192f17b407fa7f26404621357780bd017a099590035aab532f1e6438d91
BLAKE2b-256 checksum
How to use checksums
f4280294cb3e95fce5aa15734723f383e4d6df4e626b920dfc76885425f342e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for prat-geventwebsocket 0.9.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.9.5 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page