GEVENT-WEBSOCKET(1) gevent-websocket GEVENT-WEBSOCKET(1)

gevent-websocket - gevent-websocket Documentation

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

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

Installing gevent-websocket is simple with pip:

$ pip install gevent-websocket

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

  • Index
  • Module Index
  • Search Page

Jeffrey Gelens

2024, Jeffrey Gelens

April 6, 2024 0.10