Skip to main content

Karellen Gevent Websocket Library

Project description

Karellen Gevent Websocket Library

Gitter chat

This is a Karellen fork of gevent-websocket. The goal of this fork is to maintain the project to support Python 3.3, 3.4 and 3.5+ as well as 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 src/unittest/python 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 wsaccel 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.2.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

karellen_geventws-1.0.2-py3-none-any.whl (21.5 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for karellen-geventws-1.0.2.tar.gz
Algorithm Hash digest
SHA256 b57891bf693a2b4ef0c156e54f0bb659780d5ca5326561b5c92db972bd81d0fd
MD5 a3cac17d6938b3061c3e24ed9d1ec040
BLAKE2b-256 fe34d94d67151e9bb7761c3280f2a53639176a47c41913886a9f9f5ee50ff2a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for karellen_geventws-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1a713749aa76b886d059be00863cc955a534b92dd4405be3e9647aea10f5c12d
MD5 66bbb64df2556724f81abaf6091cb9ec
BLAKE2b-256 0ba0e8337fed777ddbb5d980d216f3ff128a3aa82c1290569e3910672b2166c6

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