mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-12-13 19:06:24 +00:00
EOSE extensions draft
This commit is contained in:
parent
b765b3c030
commit
46f8133cd4
53
91.md
Normal file
53
91.md
Normal file
@ -0,0 +1,53 @@
|
||||
NIP-91
|
||||
======
|
||||
|
||||
EOSE Extensions
|
||||
---------------
|
||||
|
||||
`draft` `optional`
|
||||
|
||||
This NIP defines an extension to the EOSE message that allows relays to convey additional information to clients.
|
||||
|
||||
## Extended EOSE
|
||||
|
||||
An extended EOSE is an EOSE message, with the 2nd parameter being the "extensions object". For example: `["EOSE","example-sub",{"example_ext":"example value"}]`
|
||||
|
||||
An EOSE extension is a field in the extensions object. This may contain any value.
|
||||
|
||||
Experimental extensions SHOULD use the `x_` prefix for the object key.
|
||||
|
||||
Clients MUST NOT rely on relays implementing any extensions.
|
||||
|
||||
## Extensions
|
||||
|
||||
This NIP defines a set of standard extensions.
|
||||
|
||||
### `next_created_at`
|
||||
`recommended`
|
||||
|
||||
The value of this extension MUST be an integer if present, and should specify the next `until` value the client should use for pagination.
|
||||
This MAY be higher or lower than the lowest `created_at`, and the clients SHOULD NOT perform any modifications to this value.
|
||||
|
||||
### `cursor`
|
||||
|
||||
The value of this extension MUST be a string if present, and represents a cursor the client can use to paginate this query.
|
||||
To get more events, the client MUST send a `REQ` with the same filters (except limit, which can be changed), and the `cursor` string
|
||||
in the 1st filter with the key `cursor`. Example:
|
||||
```jsonc
|
||||
< ["REQ", "examplereq1", {"kinds": [1], "limit": 1}, {"authors": ["..."], "limit": 1}]
|
||||
> ["EVENT", "examplereq1", ...]
|
||||
> ["EOSE", "examplereq1", {"cursor": "example-cursor-string", ...}]
|
||||
< ["CLOSE", "examplereq1"]
|
||||
< ["REQ", "examplereq2", {"kinds": [1], "limit": 5, "cursor": "example-cursor-string"}, {"authors": ["..."], "limit": 5}]
|
||||
> ["EVENT", "examplereq2", ...]
|
||||
...
|
||||
```
|
||||
|
||||
This cursor MUST be valid for the duration of the connection, and MAY be valid in a new connection. A relay may indicate a cursor is no longer valid
|
||||
by sending a CLOSED with the prefix `bad-cursor: `.
|
||||
|
||||
### `has_more`
|
||||
`recommended`
|
||||
|
||||
The value of this extension MUST be a boolean if present, and should represent if the client should continue trying to get events.
|
||||
This MAY be false if the relay has completed the query due to not having more events available, or may not be able to complete this query due to a permanent failure (scan limit exceeded is one).
|
Loading…
Reference in New Issue
Block a user