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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file prat-geventwebsocket-0.9.5.tar.gz.
File metadata
- Download URL: prat-geventwebsocket-0.9.5.tar.gz
- Upload date:
- Size: 15.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6babbe39212748dbd123e70f17d7c5150829c775c638910bd61211374ea541f1
|
|
| MD5 |
e1dc6404ba3461c2e1f09b79c3750592
|
|
| BLAKE2b-256 |
ccfaa20f5e990457a75bf059edc8ea43a6590a4abc223680a72efe7a3dedd427
|
File details
Details for the file prat-geventwebsocket-0.9.5.macosx-10.11-x86_64.tar.gz.
File metadata
- Download URL: prat-geventwebsocket-0.9.5.macosx-10.11-x86_64.tar.gz
- Upload date:
- Size: 31.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb0d1192f17b407fa7f26404621357780bd017a099590035aab532f1e6438d91
|
|
| MD5 |
f79dcafbbd4ce0df1d7885cb70cbb733
|
|
| BLAKE2b-256 |
f4280294cb3e95fce5aa15734723f383e4d6df4e626b920dfc76885425f342e8
|