Den mandag den 18. august 2014 21.48.05 UTC+2 skrev Tobias Oberstein:
Am 18.08.2014 09:28, schrieb Lasse Vestergaard:
I have now done the first iteration of a WAMP inspired platform. It’s
extremely light weight (more or less excluding security and
performance). I have chosen to call the platform arip (awesome real-time
IoT platform). Here is the code: https://github.com/lassesvestergaard/arip
Mmh. Why reinvent the wheel (WAMP)?
Also: I have a hard time believing that 211 lines of code
would provide anything near the functionality of WAMP / Autobahn not to
speak of Crossbar.io
The aim is to develop it for interaction designers for rapid
prototyping. I don’t know if you can use it for anything, but hopefully
it can provide you with some kind of inspiration (either in the AHAAA or
OHHH NOO sense ).
I have only one question: what was your motivation or requirement that
made you skip WAMP?
Den mandag den 14. juli 2014 12.06.57 UTC+2 skrev Lasse Vestergaard:
Thanks for your pointers!
I have now decided to start out from scratch (starting from the web
sockets level), but will keep you guys in the loop, if you are
My initial thoughts are to implement a simplistic pub/sub pattern,
that essentially isn't anything else than an array on the web socket
server, that contains all entities registered. Each entity will be
described with id, type, list of methods and a list of observers. A
method will consist of a name, list of parameters (each with name
and type) and a return type. When ever a client is publishing, the
server will just iterate through all observers registered on the
specific entity, and send the notification. This means that I don't
work with topics, but objects - when ever an object/entity says
something (anything really) all observers gets notified.
Regarding RPC, a client can iterate through all connected entities,
get all methods for each entity and call a specific method on a
specific entity with the relevant parameters. Essentially, the
server is just an index of all connected entities and their
Den tirsdag den 8. juli 2014 12.35.50 UTC+2 skrev Alexander Gödde:
Sorry, pressed 'post' accidentally, so this is 2/2:
Regarding your more general considerations:
* WAMP handles RPC and PubSub. RPC endpoints should be
discoverable, as should, probably, be publishers.
* The higher-level concept of entities which offer the RPC
endpoints, call procedures, subscribe and publish to topics
are not something the protocol can handle. As you say
yourself, this is something that needs to be done on the
* Having said that, I certainly think that this can be
implemented using WAMP and the messaging patterns it provides.
Anyway, the above thoughts are just my two cents worth at the
moment. I'm hope there's something in there that you find useful.
Am Dienstag, 8. Juli 2014 10:34:55 UTC+2 schrieb Lasse Vestergaard:
Thanks for your engagement!
I'm having a hard time figuring out whether WAMP can
actually solve my imagined paradigm or if my mental work is
just plain of :-)
My project is about creating an application where people can
vote whether they want a lamppost to be on or off. The idea
is that I want to use web sockets, because I can then work
with real-time orientation. Concretely, a home owner should
be able to start a browser, or a smartphone app, and then
see the status of lampposts around his house (ex. luminance
or each lamppost). Additionally he should be able to suggest
changes for a lamppost (ex. turning it of in 10 minutes).
Neighbours, that would be affected by the changes should be
able to vote the suggestion up or down, and at some point
the suggestion will take effect or not happen (depending on
the voting result).
That being my scenario, I want everything to be loosely
coupled and dynamic. It should ex. be possible to add new
lampposts real-time. This further means that the system
should be self adapting - when a new lamppost is deployed it
should automatically be connected to the system, and every
other clients should be able to see the new lamppost and
If I, as a user, go into my web browser and want to see all
lampposts, near me, I need to be able to distinguish between
them, and I need to be aware of each of them. This means
that each lamppost should broadcast their existence and I
should be able to subscribe to each of the lampposts
separately. This is where I see the issue with Crossbar.io
(and maybe WAMP) - if I as a programmer don't already know
exactly what is going on in the entire system I don't have a
chance to figure it out.
In the lamppost application I, as a programmer, know how a
lamppost is described, and what it can do, but I don't know
which lampposts are already connected. Therefore I need to
ask randomly to test for existence of specific lampposts.
Furthermore, two lampposts are more or less copies of each
other and therefore they would be publishing to the same
topic. How would I be able to figure out which exact
lamppost published latest, and wouldn't I run into
concurrency issues as well?
In the lamppost application I, as the programmer, am
completely aware of the functionality but do not necessary
know how many devices/entities that are actually connected.
This means that the lamppost application is rather
comprehensible - I only have one unknown factor.
If we look at this system a little more generic, then I
could in essence actually have all kinds of applications
running in this system (which is also what WAMP describe, as
far as I understand). What it all comes down to is that
Crossbar.io is just a hub where applications, sensors,
actuators etc. could hook up to, and then I could create my
own application that exploits the already connected
entities. Let's say the system is running, and a flower pod
is connected (exposing humidity and the ability to water the
plant), a lamppost, a home brewery, and a solar panel. I now
want to create a monitoring application that connects to the
Crossbar.io system, and then exploits the previous mentioned
connectivities - I ex. want to see the status of the flower
pod, and be able to water it if I so feel, and I would like
to do the same for the other entities (lamppost, brewery,
All this would be hard to do if I can't get an idea of what
is already connected, and how to use each of the connected
What all this come down to, is that I need a system much
like Crossbar.io, but I would need to be able to ask for
existing entities, functionality of each entity and
subscribe to each entity. Additionally, I imagine that an
object oriented approach would fit best. Instead of just
having lists of all topics and RPC's, I would need to move
these lists into each connected entity. This means that I
would ask a specific entity about it's own functionality
(methods/RPC's) and it's publishing topics.
To me it seems like I'm thinking of a different paradigm
than the one WAMP represents. Would it make sense to pursue
this paradigm in the future developments of WAMP or does
this more seem like a parallel project?
Den mandag den 7. juli 2014 11.36.36 UTC+2 skrev Alexander
in order to better understand the necessity for
publication topic lists in WAMP/Crossbar.io:
- What precisely is it about your usage scenario that
prevents your subscribers from knowing what topics to
- Would prefix subscription (part of the WAMP Advanced
solve your needs? More precisely: In your scenario,
would it be possible and enough to subscribe with a
prefix that is general enough to receive all publishes,
and then process them as they first occur for each
topic, or do you need advance knowledge of precise
topics that might be published to?
Note: prefix subscriptions are a feature of WAMP which
is sufficiently specified (unlike reflection), but it is
not yet implemented in Crossbar.io.
Am Dienstag, 1. Juli 2014 17:48:58 UTC+2 schrieb Lasse > > > Vestergaard:
I'm just starting looking into [crossbar.io](http://crossbar.io)
<[http://crossbar.io](http://crossbar.io)>, and it looks very promising.
What I need is the possibility to query the crossbar
router for existing topics and registered RPC's. It
could also be an extension, but I don't know how to
do that yet.
In my concrete project I need a central unit (could
be a crossbar node with a running route), and I then
need to be able to connect arbitrary entities on to
that central unit. An entity could be anything from
a sensor to an application that ex. scrapes a web
page for information. All-in-all, I just want to be
able to have some arbitrary software that can hook
up to a central place, announce it's presence and
provide some information about it self.
All this seems to be implemented in WAMP. The only
thing that is missing is the discoverability. If I
have a piece of software that hooks up to the
system, I can't ask for anything. I don't know which
topics that I could subscribe to and I don't know
which RPC's I could call.
client (a web page), where I want to monitor all
lamp posts in the system. How do I know if there
exists any lamp posts in the system? I could start
out by just asking completely randomly for arbitrary
topics, but this would not be very smart. Instead I
would like to ask the system (crossbar) for a list
of all connected entities or topics. The same goes
for RPC's. What could be really cool is if I could
ask for a list of all registered entities and then
ask the single entity for topics that it is
publishing and what RPC's it exposes.
You received this message because you are subscribed to the Google
Groups “Autobahn” group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com
To post to this group, send email to auto...@googlegroups.com
To view this discussion on the web visit
For more options, visit https://groups.google.com/d/optout.