Skip to main content

Websocket handler for the gevent pywsgi server, a Python network library

Project description

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Download-URL: https://www.gitlab.com/noppo/gevent-websocket
Description: ================
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 <https://github.com/methane/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
<https://groups.google.com/forum/#!forum/gevent>`_. Issues can be created
on `Bitbucket <https://bitbucket.org/Jeffrey/gevent-websocket/issues?status=new&status=open>`_.

.. _WAMP: http://www.wamp.ws
.. _gevent-websocket: http://www.bitbucket.org/Jeffrey/gevent-websocket/
.. _gevent: http://www.gevent.org/
.. _Jeffrey Gelens: http://www.gelens.org/
.. _PyPi: http://pypi.python.org/pypi/gevent-websocket/
.. _repository: http://www.bitbucket.org/Jeffrey/gevent-websocket/
.. _RFC6455: http://datatracker.ietf.org/doc/rfc6455/?include_text=1

Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Topic :: Internet
Classifier: Topic :: Software Development :: Libraries :: Python Modules

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

gevent-websocket-0.10.1.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

gevent_websocket-0.10.1-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

File details

Details for the file gevent-websocket-0.10.1.tar.gz.

File metadata

File hashes

Hashes for gevent-websocket-0.10.1.tar.gz
Algorithm Hash digest
SHA256 7eaef32968290c9121f7c35b973e2cc302ffb076d018c9068d2f5ca8b2d85fb0
MD5 e095bf3358175489a956949c1b4de9ff
BLAKE2b-256 98d26fa19239ff1ab072af40ebf339acd91fb97f34617c2ee625b8e34bf42393

See more details on using hashes here.

File details

Details for the file gevent_websocket-0.10.1-py3-none-any.whl.

File metadata

File hashes

Hashes for gevent_websocket-0.10.1-py3-none-any.whl
Algorithm Hash digest
SHA256 17b67d91282f8f4c973eba0551183fc84f56f1c90c8f6b6b30256f31f66f5242
MD5 a3518af261287eefdfcba36a04030ba5
BLAKE2b-256 7b842dc373eb6493e00c884cc11e6c059ec97abae2678d42f06bf780570b0193

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