jokame / AutobahnPython

WebSocket & WAMP for Python/Twisted

Home Page:http://autobahn.ws/python

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

AutobahnPython

AutobahnPython implements The WebSocket Protocol and The WebSocket Application Messaging Protocol (WAMP):

  • framework for WebSocket and WAMP clients and servers
  • implements WebSocket RFC6455, Draft Hybi-10+, Hixie-76 and WAMP v1
  • Twisted-based, runs on CPython and PyPy
  • high-performance, fully asynchronous implementation
  • best-in-class standards conformance (100% strict passes with Autobahn WebSocket Testsuite)
  • message-, frame- and streaming-APIs
  • Deferred-based API for asynchronous RPC and PubSub (WAMP)
  • supports TLS (secure WebSocket)
  • session authentication (WAMP-CRA)
  • Open-source (Apache 2 license)

You can use AutobahnPython to create clients and servers speaking either plain WebSocket or WAMP.

Using WAMP you can build applications around asynchronous RPC and PubSub messaging patterns.

Where it runs

AutobahnPython runs under Python (latest versions of CPython 2.6 or 2.7) and PyPy (1.9 or later).

The only dependency is Twisted (11.1 or later).

AutobahnPython is used on "fat" platforms like Windows, MacOS X, Linux, *BSD and embedded platforms like the RaspberryPi.

AutobahnPython also runs along Twisted Web and any Web framework like Flask or Django that runs under WSGI containers.

You can run your favorite Web framework and AutobahnPython WebSocket and/or WAMP as one application on one port.

AutobahnPython also runs on Android under the Scripting Layer for Android (SL4A).

Create a subfolder in the /sl4a/scripts/ folder, copy the Autobahn module folder into it. Your program file (client or server) should then be a sibling to the autobahn folder, i.e.

/sl4a/scripts/myapp/myapp.py
/sl4a/scripts/myapp/autobahn/__init__.py
            ...
/sl4a/scripts/myapp/autobahn/xormasker.py

AutobahnPython runs on Jython (2.7 beta1) also .. not yet supported completely, but a start. Please see the tickets here and here. Also: don't expect any wonders .. AutobahnPython (without wsaccel .. see below) running on Jython is slower (20-30%) than on CPython, and significantly slower than on PyPy.

Performance

AutobahnPython is portable, well tuned code. You can further accelerate performance by

  • Run your whole application under PyPy
  • Accelerate hotspots via wsaccel

AutobahnPython will automatically run Cython versions of UTF8 validation and WebSocket frame masking/demasking when wsaccel is available. Those two function are usually the hotspots within AutobahnPython.

Where to go

For more information, including getting started, tutorials and reference documentation, please visit the project's homepage, or check out the examples in this repository.

Get in touch

Get in touch on IRC #autobahn on chat.freenode.net or join the mailing list.

About

WebSocket & WAMP for Python/Twisted

http://autobahn.ws/python

License:Apache License 2.0