Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/karellen/karellen-geventws
Karellen Gevent Websocket Library
https://github.com/karellen/karellen-geventws
gevent websocket websocket-library websockets
Last synced: about 2 months ago
JSON representation
Karellen Gevent Websocket Library
- Host: GitHub
- URL: https://github.com/karellen/karellen-geventws
- Owner: karellen
- License: other
- Created: 2016-12-06T18:09:22.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2017-03-19T21:48:49.000Z (almost 8 years ago)
- Last Synced: 2024-08-09T08:34:42.275Z (6 months ago)
- Topics: gevent, websocket, websocket-library, websockets
- Language: Python
- Homepage: https://karellen.co/karellen
- Size: 1.05 MB
- Stars: 15
- Watchers: 5
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Karellen Gevent Websocket Library
# This project is now suspended as the [Jeffrey Gelens](https://github.com/jgelens) resumed maintenance of [gevent-websocket](https://github.com/jgelens/gevent-websocket).
[![Gitter chat](https://badges.gitter.im/karellen/gitter.svg)](https://gitter.im/karellen/lobby)
This is a [Karellen](https://www.karellen.co/karellen/) fork of
[gevent-websocket](http://www.bitbucket.org/Jeffrey/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](https://github.com/karellen/karellen-geventws/) is a
WebSocket library for the [gevent](http://www.gevent.org/) networking
library.Features include:
- Integration on both socket level or using an abstract interface.
- RPC and PubSub framework using [WAMP](http://wamp-proto.org)
(WebSocket Application Messaging Protocol).
- Easily extendible using a simple WebSocket protocol plugin API```python
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:
```python
from gevent import pywsgi
from geventwebsocket.handler import WebSocketHandlerdef 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](https://pypi.python.org/pypi/karellen-geventws/) 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](https://github.com/karellen/karellen-geventws/) is
pretty fast, but can be accelerated further by installing
[wsaccel](https://github.com/methane/wsaccel) and `ujson` or
`simplejson`:$ pip install wsaccel ujson
[karellen-geventws](https://github.com/karellen/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](http://www.bitbucket.org/Jeffrey/gevent-websocket/).Issues can be created on
[GitHub](https://github.com/karellen/karellen-geventws/issues).