Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Versioning or Feature Announcement #23

Closed
oberstet opened this issue Mar 25, 2013 · 4 comments
Closed

Versioning or Feature Announcement #23

oberstet opened this issue Mar 25, 2013 · 4 comments

Comments

@oberstet
Copy link
Member

No description provided.

@jmarine
Copy link

jmarine commented Apr 26, 2013

I think these aren't incompatible, so I would vote for having both informations.
Feature announcement is a nice idea, but I would maintain basic compatibility with previous WAMPv1's WELCOME message, adding a version number (2) in the HELLO message:
[HELLO, SessionID|string, version|integer, HelloDetails|dict]

version = 2
HelloDetails={serverSessionID?, agent?, features?, roles?}

@oberstet
Copy link
Member Author

The problem is: with WAMPv1, a client won't send anything to the server until it has received the WELCOME message from the server. So the server does not know which protocol version the client speaks, and if we want to maintain compatibility, the server needed to send

[ TYPE_ID_WELCOME , sessionId , protocolVersion = 2, serverIdent ]

Since there is not client-to-server WELCOME message, the server won't ever know which protocol version the client supports. So we have 2 options: the server will later use WAMPv2 features / message structure (incompatible with WAMPv1), and the only valid client behavior would be to immediately bail out after receiving a WELCOME from the server with protocolVersion = 2. Or: don't change the message structure of WAMPv2 vs v1.

Anyway you put it, I think the "versioning" that WAMPv1 claims to support is severly broken. Its my fault. I havent put enough thought into it. Sorry, but I think it's broken enough to make a clear cut. And if we make a clear cut, then my suggestion is not to fix "versioning", but to drop it altogether and instead implement "feature announcement" and built in extensibility points (like the dict options present in various messages).

@oberstet
Copy link
Member Author

The problem is: with WAMPv1, a client won't send anything to the server until it has received the WELCOME message from the server. So the server does not know which protocol version the client speaks, and if we want to maintain compatibility, the server needed to send

[ TYPE_ID_WELCOME , sessionId , protocolVersion = 2, serverIdent ]

Since there is no client-to-server WELCOME message, the server won't ever know which protocol version the client supports. So we have 2 options: the server will later use WAMPv2 features / message structure (incompatible with WAMPv1), and the only valid client behavior would be to immediately bail out after receiving a WELCOME from the server with protocolVersion = 2. Or: don't change the message structure of WAMPv2 vs v1.

Anyway you put it, I think the "versioning" that WAMPv1 claims to support is severly broken. Its my fault. I havent put enough thought into it. Sorry, but I think it's broken enough to make a clear cut. And if we make a clear cut, then my suggestion is not to fix "versioning", but to drop it altogether and instead implement "feature announcement" and build in extensibility points (like the dict options present in various messages).

@oberstet
Copy link
Member Author

WAMPv2 has (extensible) feature announcement via the HELLO message: https://github.com/tavendo/WAMP/tree/master/spec#hello-and-goodbye

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants