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.

   from geventwebsocket import WebSocketServer, WebSocketApplication, Resource

   class EchoApplication(WebSocketApplication):
       def on_message(self, message):
           self.ws.send(message)

   WebSocketServer(
       ('', 8000),
       Resource({'/': EchoApplication})
   )


Add WebSockets to your WSGI application
***************************************

It isn't necessary to use the build-in *WebSocketServer* to start
using WebSockets. WebSockers can be added to existing applications
very easy by making the non-standard *wsgi.websocket* variable
available in the WSGI environment. An example using Flask follows:

   from geventwebsocket import WebSocketServer, WebSocketError
   from flask import Flask, request, render_template

   app = Flask(__name__)

   @app.route('/')
   def index():
       return render_template('index.html')

   @app.route('/api')
   def api():
       ws = request.environ.get('wsgi.websocket')

       if not ws:
           abort(400, "Expected WebSocket request")

       while True:
           try:
               message = ws.receive()
               ws.send("Your message was: {}".format(message))
           except WebSocketError:
               # Possibility to execute code when connection is closed
               break

   if __name__ == '__main__':
       server = WebSocketServer(("", 8000), app)
       server.serve_forever()

Also the browser Javascript application can be very simple:

   <!DOCTYPE html>
   <html>
   <head>
     <script>
       var ws = new WebSocket("ws://localhost:8000/api");

       ws.onopen = function() {
           ws.send("Hello, world");
       };
       ws.onmessage = function (event) {
           alert(event.data);
       };
     </script>
   </head>
   </html>


Features
********

* Framework for WebSocket servers and WebSocket subprotocols

* Implementation of RFC6455 and Hybi-10+

* gevent based: high performance, asynchronous

* standards conformance (100% passes the Autobahn Websocket
  Testsuite)


Installation
************


Distribute & Pip
================

Installing gevent-websocket is simple with pip:

   $ pip install gevent-websocket


Get the Code
============

Requests is being developed on BitBucket.

You can clone the repsistory:

   hg clone https://www.bitbucket.org/Jeffrey/gevent-websocket

or download the tarball:

   curl -LO https://bitbucket.org/Jeffrey/gevent-websocket/TODO

Once you have a copy, you can either embed it in your application, or
installed it on your system with:

   $ python setup.py install


API
***


Main classes
============


Exceptions
==========


Indices and tables
******************

* Index

* Module Index

* Search Page
