Add notes to ONGOING APIs.
This commit is contained in:
parent
6ce518eb19
commit
9408bc8260
1 changed files with 33 additions and 16 deletions
|
@ -444,7 +444,11 @@ What data flows does it address:
|
|||
Send a message ``[ONGOING]``
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.. NOTE::
|
||||
Semantics for HTTP ordering.
|
||||
Semantics for HTTP ordering. Do we really want to block requests with higher
|
||||
sequence numbers if the server hasn't received earlier ones? Is this even
|
||||
practical, given clients have a limit on the number of concurrent connections?
|
||||
How can this be done in a way which doesn't suck for clients? Could we just
|
||||
say "it isn't 'Sent' until it comes back down your event stream"?
|
||||
|
||||
Inputs:
|
||||
- Room ID
|
||||
|
@ -467,8 +471,12 @@ E2E Notes:
|
|||
Presence API ``[ONGOING]``
|
||||
--------------------------
|
||||
.. NOTE::
|
||||
- Per device presence
|
||||
- Presence lists / roster?
|
||||
- Per device presence: how does this work? Union of devices? Priority order for
|
||||
statuses? E.g. online trumps away trumps offline. So if any device is online,
|
||||
then the user is online, etc.
|
||||
- Presence lists / roster? We probably do want this, but are we happy with the
|
||||
v1 semantics?
|
||||
|
||||
|
||||
When a session starts, the home server can treat the user as "online". When the
|
||||
session ends, the home server can treat the user as "offline".
|
||||
|
@ -483,7 +491,7 @@ Typing API ``[ONGOING]``
|
|||
------------------------
|
||||
.. NOTE::
|
||||
- Linking the termination of typing events to the message itself, so you don't
|
||||
need to send two events and don't get flicker.
|
||||
need to send two events and don't get flicker?
|
||||
|
||||
When in a session, a user can send a request stating that they are typing in a
|
||||
room. They are no longer typing when either the session ends or they explicitly
|
||||
|
@ -495,27 +503,29 @@ Inputs:
|
|||
Output:
|
||||
- None.
|
||||
Notes:
|
||||
- Typing will time out when the session ends.
|
||||
- Typing will time out when the session ends. If a session is restarted, the
|
||||
typing notification must be sent again.
|
||||
|
||||
Relates-to pagination API ``[Draft]``
|
||||
-------------------------------------
|
||||
See the "Relates to" section for more info.
|
||||
|
||||
Inputs:
|
||||
- Event ID
|
||||
- Pagination token
|
||||
- limit
|
||||
Output:
|
||||
- A chunk of child events
|
||||
- A new pagination token
|
||||
- A new pagination token for earlier child events.
|
||||
|
||||
Capabilities API ``[ONGOING]``
|
||||
------------------------------
|
||||
.. NOTE::
|
||||
- Server capabilities: Keep hashing step for consistency or not? Extra request.
|
||||
- Client capabilities: List of hashes f.e device vs union of hashes on all
|
||||
devices?
|
||||
- Server capabilities: Keep hashing step for consistency or not? Extra request
|
||||
if we do.
|
||||
- Client capabilities: Clients which are offline but can be pushed should have
|
||||
their capabilities visible. How to manage unregistering them e.g. if they
|
||||
uninstall the app?
|
||||
uninstall the app? Have a set of 'offline' capabilities?
|
||||
|
||||
|
||||
How does a client know if the server it is using supports a content repository?
|
||||
|
@ -552,10 +562,16 @@ Client
|
|||
- e.g. Whether this client supports VoIP
|
||||
|
||||
When a session is started, the client needs to provide a capability set. The
|
||||
server will take the "union" of all the user's connected clients' capability
|
||||
sets and send the hash of the capabilities as part of presence information
|
||||
server will take the hashes of all the user's connected clients' capability
|
||||
sets and send the list of hashes as part of presence information
|
||||
(not necesarily as a ``m.presence`` event, but it should act like presence
|
||||
events).
|
||||
events). It is sent as a list instead of a union of hashes because hashes work
|
||||
best when they don't change. A union of many devices' hashes will change
|
||||
frequently when devices come on and offline (``max hashes = 2^num_devices``).
|
||||
In contrast, the size of the list would vary, but the hashes themselves
|
||||
would remain the same for a given device (``max hashes = num_devices``). Keeping
|
||||
the hashes the same is the best as that means clients do not need to request
|
||||
the capabilities for the given hash.
|
||||
|
||||
On first signup, the client will attempt to send the hash and be most likely
|
||||
refused by the home server as it does not know the full capability set for that
|
||||
|
@ -576,8 +592,8 @@ Federation
|
|||
- e.g. Whether you support backfill, hypothetical search/query/threading APIs
|
||||
- Same as the server capability API
|
||||
|
||||
VoIP
|
||||
----
|
||||
VoIP ``[TODO]``
|
||||
---------------
|
||||
This addresses one-to-one calling with multiple devices. This uses the
|
||||
``updates`` key to handle signalling.
|
||||
|
||||
|
@ -629,7 +645,8 @@ APIs in order to fix certain issues.
|
|||
Sessions ``[ONGOING]``
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
.. NOTE::
|
||||
- Offline mode? How does that work with sessions?
|
||||
- Offline mode? How does that work with sessions? Separate endpoint to say
|
||||
"start a session only"?
|
||||
|
||||
A session is a group of requests sent within a short amount of time by the same
|
||||
client. Sessions time out after a short amount of time without any requests.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue