Add notes to ONGOING APIs.

use-cases
Kegan Dougal 10 years ago
parent 6ce518eb19
commit 9408bc8260

@ -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…
Cancel
Save