-
Notifications
You must be signed in to change notification settings - Fork 380
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
Client server v2 #2
Conversation
From IRC: |
my only other concern is the amount of stuff it doesn't address. i'm particularly concerned that this helps us get further with the application services API (i.e. subscribing to events on behalf of virtual users, and possibly expose virtual rooms(?)) |
then and now, with the filter tokens specified. If it finds > 30 events for a given room, it returns a brand new page | ||
for that room. If it finds < 30 events, it returns those events. Any new rooms are also returned. Returns a new stream token. | ||
- GET /eventStream with new stream token. Blocks. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What happens if the server gets old events for a room as part of resolving a net split. Does it just force a resync of the client? How does it do so if the client has already done an initialSync. Does it just expire the old stream tokens?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Out of order events in general are not covered by this proposal.
Would it make sense to have a clear concept of a "session of actively using the client", i.e. hitting the event stream, using the API? It might make timing out presence and typing notifications due to inactivity simpler. Currently this seems to be wrapped up in the "stream token" concept. |
Do have any way of identifying individual devices for presence and push notifications? |
This is a good start. Inline CommentsAPI Changes Summary
How does this relate to room initial sync?
I'm not sure how this is going to work given the fact that we might receive out of order events? I think this may possible, but will require a lot of thought. Resolves issues
I don't understand how the "fixes" solve these problems.
Do we also want to be able to "paginate" on room members?
Again, I don't follow what the solution here is. Issues not addressed
The current API enforces atomic updates of power levels, which is quite a nice property.
From a federation/server point of view, its easy and reliable to get events before a given event. Its harder to reliably get events after.
Rejection can be either "I should not have shown you that event and its no longer part of the history of a room", or it may be included as part of history in its redacted form.
It would be nice if we separated all types EDUs from PDUs.
I really really want us to use timestamps. Either you have a date library or you don't. If you don't, then timestamps are easier to work with. If you do, then changing timestamps into ISO8601 is easy. I am of the opinion that first and foremost we should make the JSON easy to parse before we make it easy for humans to read. Meta APIsGenerating an event filtering tokenDo we also want to be able to specify negative filters? e.g. don't give me topic events. What is the lifecycle of these tokens? When do they die? Should we have some predefined default tokens? Action APIsJoining a roomWe probably also want an API that allows us to specify a room ID and list of hosts to join via. Syncing (aka I want live data)
I don't think this is such a huge concern necessarily, since the home server can return less than the clients have requested. Home servers will probably have an internal limit (e.g. 100 or 1000) to make sure that clients can't do exactly this. Examples#2 Less buggy SYWEB recreation
These look like they could/should be combined into one. Unaddressed topics
|
There doesn't seem to be any mention of the requirements. We are told that a "Less buggy SYWEB recreation" does "GET /initialSync max=1", but we have no idea what client-side requirement that is supposed to fulfil. I think it would be worthwhile to specify the requirements for each of the hypothetical clients in more detail. |
We also have lost improvements to the public room API (e.g. paginating or searching it) |
Closing to avoid confusion. |
* Update link to API viewer Fixes matrix-org#2
Version 2 of the client server API.