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 gevent-websocket 0.9.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gevent-websocket-0.9.3.tar.gz | 16.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gevent_websocket-0.9.3-py27-none-any.whl | Python 2.7 | none | any | Details |
Total release size: 37.5 kB
Release files / gevent-websocket-0.9.3.tar.gz
| Download URL | gevent-websocket-0.9.3.tar.gz |
|---|---|
| Size | 16.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6475220340f9f8895a0f51bd2b9df3511bc7765dc055f49e997584bdaee3381f
|
|
BLAKE2b-256 checksum How to use checksums |
0e189e7d900b40a7be1785b27f5fdba0306bcb1b857b1683d34457a2b812dd77
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / gevent_websocket-0.9.3-py27-none-any.whl
| Download URL | gevent_websocket-0.9.3-py27-none-any.whl |
|---|---|
| Size | 21.0 kB |
| Tags | Python 2.7 |
|
SHA-256 checksum How to use checksums |
c9ad2a46790679aa8f1144c7ed0bb93cc6fb93efd1edddc3ad1b94a146d2ace8
|
|
BLAKE2b-256 checksum How to use checksums |
7bb250f37e7c826e3d520b2af432768976c9edd5b39ee57739a94dda869ea180
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |