6.7 KiB
WAMP Examples
NOTE that for all examples you will need to run a router. We develop Crossbar.io and there are other routers available as well. We include a working Crossbar.io configuration in the examples/router/ subdirectory as well as instructions on how to run it.
Overview of Examples
The examples are organized between asyncio and Twisted at the top-level, with similarly-named examples demonstrating the same functionality with the respective framework.
Each example typically includes four things:
frontend.py
: the Caller or Subscriber, in Pythonbackend.py
: the Callee or Publisher, in Pythonfrontend.js
: JavaScript version of the frontendbackend.js
: JavaScript version of the backend*.html
: boilerplate so a browser can run the JavaScript
So for each example, you start one backend and one frontend component (your choice). You can usually start multiple frontend components with no problem, but will get errors if you start two backends trying to register at the same procedure URI (for example).
Still, you are encouraged to try playing with mixing and matching the frontend and backend components, starting multiple front-ends, etc. to explore Crossbar and Autobahn's behavior. Often the different examples use similar URIs for procedures and published events, so you can even try mixing between the examples.
The provided Crossbar.io
configuration will run a Web server that you can visit at http://localhost:8080 and includes links to the
frontend/backend HTML for the javascript versions. Usually these just
use console.log()
so you'll have to open up the JavaScript
console in your browser to see it working.
Automatically Run All Examples
There is a script (./examples/run-all-examples.py
) which
runs all the WAMP examples for 5 seconds each, this
asciicast shows you how (see comments for how to run it
yourself):
Publish & Subscribe (PubSub)
- Basic Twisted - asyncio - Demonstrates basic publish and subscribe.
- Complex Twisted - asyncio - Demonstrates publish and subscribe with complex events.
- Options Twisted - asyncio - Using options with PubSub.
- Unsubscribe Twisted - asyncio - Cancel a subscription to a topic.
Remote Procedure Calls (RPC)
- Time Service Twisted - asyncio - A trivial time service - demonstrates basic remote procedure feature.
- Slow Square Twisted - asyncio - Demonstrates procedures which return promises and return asynchronously.
- Arguments Twisted - asyncio - Demonstrates all variants of call arguments.
- Complex Result Twisted - asyncio - Demonstrates complex call results (call results with more than one positional or keyword results).
- Errors Twisted - asyncio - Demonstrates error raising and catching over remote procedures.
- Progressive Results Twisted - asyncio - Demonstrates calling remote procedures that produce progressive results.
- Options Twisted - asyncio - Using options with RPC.
I'm Confused, Just Tell Me What To Run
If all that is too many options to consider, you want to do this:
- Open 3 terminals
- In terminal 1, setup and run a local Crossbar in the root of your Autobahn checkout.
- In terminals 2 and 3, go to the root of your Autobahn checkout and
activate the virtualenv from step 2
(
source venv-autobahn/bin/activate
) - In terminal 2 run
python ./examples/twisted/wamp/rpc/arguments/backend.py
- In terminal 3 run
python ./examples/twisted/wamp/rpc/arguments/frontend.py
The above procedure is gone over in this this asciicast: