Comments (4)
I like the idea of presence as I have written that logic in two of my applications on top of the wamp wire. I've also written an application using pub/sub where it wasn't needed and I would not desire the transmission of unneeded data to each client.
+1 to Presence, but optionally on a per-use basis.
from wamp-proto.
When a presence message is generated (with #joined/#left metatopics), in which attribute name of the "metaevent" argument should be encoded the "session ID" of the (un)subscribed client? Maybe "sessionId"? i.e:
[ METAEVENT, "http://awesometopic#1", "http://wamp.ws/sub#joined", { "sessionId" : "v59mbCGDXZ7WTyxB" } ]
And what about adding the "#created" & "#removed" metatopics? (to be used when any topic is created/deleted from the server)
I'm also interested in subscribing only to the presence MetaTopics (for monitoring purposes).
For example, when calling the function "sess.subscribe(topicURI, null, onMetaEventCallback)", it could send a message like:
[ MSG_TYPE_SUBSCRIBE_E, topicURI, { "EVENTS": false, "METAEVENTS": true } ]
In this case, the server should not send "EVENT" messages to the monitoring client, neither send the "#joined"/"#left" METAEVENT messages from the subscribed monitoring client to other subscribers (real clients). But the monitor should receive #joined/#left METAEVENTs from the other clients and #removed/#created" METAEVENTS generated by the server.
On the JavaScript client-side, I think the "sess.subscribe" method should have an optional parameter to request extra subscription features (like: "last", "sinceTime", "identifyEventPublisher", "enableEventId"). i.e:
sess.subscribe("http://awesometopic#1", onEvent1, onMetaEvent1, { sinceTime: 0 } );
from wamp-proto.
I will implement stuff along the outline above now. Rereading after some time, I think it makes sense.
@jmarine :
-
Regarding attribute name .. yeah, probably just
session
, that is[ METAEVENT, "http://awesometopic#1", "http://wamp.ws/sub#joined", { "session" : "v59mbCGDXZ7WTyxB" } ]
-
Topic created/removed meta events: topics with AutobahnPython server at least are not created, but registered on a specific session.
-
Meta events only. Not generating presence events for clients that do meta event only subscribes. Mmmh. seems very specific. Need to think/see ..
-
JS API. Yep. I'd only change the order of args:
sess.subscribe("http://awesometopic#1", onEvent1, {metaevents: ["http://wamp.ws/sub#joined", "http://wamp.ws/sub#left"]}, onMetaEvent1);
since one needs to specify the meta events to be received anyway, but if no meta events, supplying extra subscribe info like topic matching type (exact, prefix, wildcard) could be present.
from wamp-proto.
WAMPv2 solves the issues discussed above in 2 ways:
-
SUBSCRIBE now is always acknowledged (with a subscription ID). UNSUBSCRIBE is also acknowledged.
-
Nevertheless, for presence and potentially other things in the future, WAMPv2 has METAEVENTs:
[METAEVENT, Subscription|id, Metatopic|uri] [METAEVENT, Subscription|id, Metatopic|uri, Details|dict]
from wamp-proto.
Related Issues (20)
- Add acknowledge option to CALL message? HOT 17
- How to serialize datetime type? HOT 17
- Web site: Add stuff to "Users and Resources" section HOT 10
- Best practice for error answer? HOT 1
- Unspecified Behavior for Callee Leaving During CALL HOT 19
- Unclear behavior for caller leaving during CALL request HOT 7
- Propagation of frozen options in progressive call invocations HOT 6
- Error URI for expired progressive call race condition HOT 3
- Is `wamp.close.goodbye_and_out` deprecated in favor of `wamp.close.normal`? HOT 5
- `wamp.error.no_such_session` is not documented HOT 1
- `wamp.registration.match` matching algorithm is undefined HOT 3
- Should subscriptions to meta events fire the `wamp.subscription.on_subscribe` event? HOT 1
- Tolerating old CALL request IDs when progressive invocations are supported HOT 4
- Add Payload to Abort HOT 28
- Add `REGISTER.Options.forward_timeout` option HOT 2
- Broken Applet on wamp-proto.org
- Equivalent of 500 Internal Server Error in WAMP HOT 5
- Incorrect maximum raw socket limit HOT 1
- Error URI for Rate Limiting Purposes HOT 25
- Add AsyncAPI to comparison on web site
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wamp-proto.