Code Monkey home page Code Monkey logo

Comments (5)

oberstet avatar oberstet commented on June 12, 2024

Yes, there is a fixed set of roles defined in WAMPv2, and each peer can have one or more roles at the same time. For each role, there are optional features. Support for these optional features is announced by a peer (for each role it supports) in the HELLO message during Session establisment. And yes, it makes sense to store the peer's features. E.g. a Dealer that knows that a Callee does not support call canceling should not send INTERRUPT messages.

Serializations are aspects of a transport. A transport can also be a "direct-call" transport with no actual serialization at all. This is the case e.g. here https://github.com/tavendo/AutobahnPython/tree/master/examples/twisted/wamp/basic#application-component-deployment when an application component is run directly next to the router within the same program (OS process).

Regarding "channels" and "transports": these really mean the same. We should replace "channel" in the spec with "transport".

A Session runs over a transport. Currently, only 1 Session can run over a transport at any given point in time. But this is probably going to change (#39).

Beside "Transport" and "Session", we will likely introduce "Realm": a WAMP routing namespace and administrative domain:

  • A Session exists between two Peers.
  • Zero or more Sessions run over a Transport.
  • Each Session is attached to a Realm.
  • Transports are reusable.
  • A Realm can (obviously) have many Sessions attached.
  • Sessions for a given Realm can come in via different Transports.

A Peer is the ephemeral "thing" at (both) ends of a ephemeral Session. It does not have an existence separate from a Session. In this respect, above drawing is probably not yet correct. A Session "has" two Peers. Each Peer "has" roles. The peer's role instance has features enabled/disabled. The abstract features are attributes of the abstract role.

A Session "has" a Transport (but that Transport can run different Sessions).

from wamp-proto.

oberstet avatar oberstet commented on June 12, 2024

Which roles are you planning for? Which WebSocket (or other transport)? JSR356?

from wamp-proto.

tiago156 avatar tiago156 commented on June 12, 2024

Thanks for your comments,

Right now I'm starting to develop a WAMP V2 implementation on Java and C#, I will first start with the Java impl and this is my roadmap (release dates are not defined yet but I need to do it fast):

Roadmap for V1:

  • RPC Roles (CALLER, DEALER, CALLEE)
  • Websocket Transport (JSR356)
  • Http Streaming Transport (JSR340, Async Servlets). Sometimes I have problems with websockets running over proxies so I need to develop a "backup" transport.
  • JSON Serialization (JSR353, JSONP)

Roadmap for V2:

  • PUB/SUB Roles (SUBSCRIBER/PUBLISHER/BROKER)

Roadmap for V3:

  • Role features
  • Advanced PUB/SUB and RPC

Roadmap for V4

  • Other missing features

Do you have any release date for the final specification?

from wamp-proto.

oberstet avatar oberstet commented on June 12, 2024

In fact, we have plans for a JSR356 WAMP implementations also (Caller, Callee, Publisher, Subscriber roles): https://github.com/tavendo/AutobahnPython/blob/master/doc/WAMPv2%20Integration%20Options.pdf?raw=true

This won't get Broker/Dealer roles, since application code is better run outside Routers in general. And Crossbar.io will soon get WAMPv2 support and then provides a full-featured WAMPv2 router.

Do you need to implement router roles (broker/dealer)? That is: are you planning to do a custom router?

We are currently implementing WAMPv2 in AutobahnJS (alpha code: https://github.com/tavendo/AutobahnJS/blob/wamp2/work/session.js) and start working on Crossbar.io again. http://crossbar.io/

The final WAMPv2 spec will probably still take till March, since we need to make sure it really works when actually being implemented. This includes advanced stuff done in Crossbar.io, like clustered routers, and multitenancy (multiple routing realms).

from wamp-proto.

oberstet avatar oberstet commented on June 12, 2024

WAMP 2 Basic Profile is considered stable now: https://github.com/tavendo/WAMP/blob/master/spec/basic.md

from wamp-proto.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.