diff --git a/README.rst b/README.rst index 2663483..d5a5328 100644 --- a/README.rst +++ b/README.rst @@ -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 :: @@ -24,62 +30,39 @@ 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. :: @@ -87,6 +70,7 @@ 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/ diff --git a/geventwebsocket/websocket.py b/geventwebsocket/websocket.py index 750f382..2b1275f 100644 --- a/geventwebsocket/websocket.py +++ b/geventwebsocket/websocket.py @@ -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