GEVENT-WEBSOCKET(1)

NAME
gevent-websocket - gevent-websocket Documentation

gevent-websocket is a WebSocket <http://www.websocket.org/aboutwebsocket.html> library for the gevent <http://www.gevent.org> networking library written written and maintained by Jeffrey Gelens <http://www.noppo.pro> 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})
    )

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 <http://flask.pocoo.org> 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>

•   Framework for WebSocket servers and WebSocket subprotocols

•   Implementation of RFC6455 <http://datatracker.ietf.org/doc/rfc6455/?include_text=1> and Hybi-10+

•   gevent <http://www.gevent.org> based: high performance, asynchronous

•   standards conformance (100% passes the Autobahn Websocket Testsuite <http://autobahn.ws/testsuite>)

DISTRIBUTE & PIP

Installing gevent-websocket is simple with pip <http://www.pip-installer.org>:

    $ 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

MAIN CLASSES

EXCEPTIONS

•   Index <>

•   Module Index <>

•   Search Page <>

Author
Jeffrey Gelens

Copyright
2013, Jeffrey Gelens