Skip to content

Commit

Permalink
Updated README
Browse files Browse the repository at this point in the history
  • Loading branch information
jgelens committed Nov 28, 2013
1 parent 4544cd5 commit 491439f
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 42 deletions.
68 changes: 26 additions & 42 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,14 @@
gevent-websocket
================

`gevent-websocket`_ is a websocket library for the gevent_ networking library
written written and maintained by `Jeffrey Gelens`_ It is licensed under the BSD license.
`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 implementation using `WAMP`_ (WebSocket Application
Messaging Protocol).
- Easily extendible using a simple WebSocket protocol framework

::

Expand All @@ -24,69 +30,47 @@ written written and maintained by `Jeffrey Gelens`_ It is licensed under the BSD
Resource({'/': EchoApplication})
)

Installation
------------

Install Python 2.5 or newer and Gevent and its dependencies. The latest release
can be download from PyPi_ or by cloning the repository_ and running::

$ python setup.py install

The easiest way to install gevent-websocket is directly from PyPi_ using pip or
setuptools by running the commands below::

$ pip install gevent-websocket

or::

$ easy_install gevent-websocket

This also installs the dependencies automatically.


Usage
-----

Gevent Server
^^^^^^^^^^^^^

At the moment gevent-websocket has one handler based on the Pywsgi gevent
Hook up the WebSocketHandler to the Pywsgi Server by setting the `handler_class`
when creating the server instance.

::

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()

The handler enhances your WSGI app with a Websocket environment variable when the
browser requests a Websocket connection.
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

def websocket_app(environ, start_response):
if environ["PATH_INFO"] == '/echo':
ws = environ["wsgi.websocket"]
message = ws.receive()
ws.send(message)

Gunicorn Server
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
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


.. _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/
Expand Down
1 change: 1 addition & 0 deletions geventwebsocket/websocket.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ def current_app(self):
if hasattr(self.handler.server.application, 'current_app'):
return self.handler.server.application.current_app
else:
# For backwards compatibility reasons
class MockApp():
def on_close(self, *args):
pass
Expand Down

0 comments on commit 491439f

Please sign in to comment.