From 33a8c3c89f999be16f67c3e45fa676adb65afe7a Mon Sep 17 00:00:00 2001 From: Tejas Kumar Date: Mon, 23 Jul 2018 16:14:33 +0200 Subject: [PATCH] Add doc --- docs/contiamo-long-poll.md | 78 +++++++++++++++++++++++++++++++++++++ docs/long-poll-flow.png | Bin 0 -> 46584 bytes src/Poll.tsx | 4 -- 3 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 docs/contiamo-long-poll.md create mode 100755 docs/long-poll-flow.png diff --git a/docs/contiamo-long-poll.md b/docs/contiamo-long-poll.md new file mode 100644 index 00000000..9b28fbf1 --- /dev/null +++ b/docs/contiamo-long-poll.md @@ -0,0 +1,78 @@ +# Motivation + +Streaming events from servers to browsers is a big messy non-standardized problem. This spec will define _how_ Contiamo sends events from backend services to web-browsers. This can be used for streaming new logs from long running process or notify that the object being viewed has been changed. + +In short, servers will implement long-polling [[1](https://en.wikipedia.org/wiki/Push_technology#Long_polling), [2](https://realtimeapi.io/hub/http-long-polling/)]. Clients will indicate a long-poll request using the [`Prefer` header](https://tools.ietf.org/html/rfc7240#section-4.3), servers will indicate the polling timeout with a [304 status code](https://httpstatuses.com/304), and payloads will be JSON. + +Alternative implementations that a service and can support _in addition_ to long-polling are grpc streams [[1](https://grpc.io/docs/guides/concepts.html#server-streaming-rpc), [2](https://grpc.io/docs/tutorials/basic/node.html#streaming-rpcs)] or http streaming [[1](https://realtimeapi.io/hub/http-streaming/), [2](https://tools.ietf.org/id/draft-loreto-http-bidirectional-07.html#streaming)] with [new-line-delimited-json](http://ndjson.org/). + + + + + +- [Implementation](#implementation) + - [Endpoints](#endpoints) + - [Flow](#flow) + - [Request Headers](#request-headers) + - [Response Headers](#response-headers) + - [Response](#response) + - [Status Codes](#status-codes) +- [Research Examples](#research-examples) +- [Specifications, Blogs, and other Documents](#specifications-blogs-and-other-documents) + + + +# Implementation + +## Endpoints + +Long polling will be implemented as an enhancement of existing REST/RPC endpoints, not as new polling specific endpoints. The API documentation must specify if the endpoint supports long-polling. + +## Flow + +HTTP long polling is a variation on the standard polling but with the distinction that the polling request are "long-lived". At Contiamo, the flow looks like this: + +![Long Poll Flow](long-poll-flow.png) + +## Request Headers + +To start a long-polling request, Restful React makes an `HTTP GET` request and set the `Prefer` header with a wait value and an index value, e.g. `wait=60;index=abad123`. This is a number of seconds and a query "position". This value can be set at a maximum of 60 seconds, the minimum can be defined by the backend server, but is typically >5 seconds. The index will be a server defined and supplied value. + +The `index` value is optional, if omitted, the request is processed exactly the same as a standard web request (meaning based on any `GET` parameters supplied). This `index` value should be read from the `X-Polling-Index` header in a previous response. When it is set, the server will use the value to wait for any changes subsequent to that index. + +## Response Headers + +On a successful `GET`, the server must set a head `X-Polling-Index`, this value is a unique identifier representing the current state of the resource. It is not required to have any specific structure or meaning for the client. Meaning that the client should not inspect the value for any specific information or structure. For example, this value could be datetime string of the last update, an int64 of the last object, or it could be a base64 encoded datetime string like `MjAxOC0wMS0wMVQwMDowMDowMFo=`. Whatever it is, the server is responsible for encoding and decoding this value to filter the query for changes from that index point. + +### Response + +In the absence of the `Prefer` header, the request will behave as normal, the backend service will immediately process and return a response as soon as it can. + +When the `Prefer` header is set, the server will parse (and potentially normalize the value). It will process the request. The server will wait until a maximum of the `wait` value has elapsed _or_ it can fulfill the request. If the `wait` time elapses, it will send a `304` status code indicating that the request did not fail, but contains no data. If the server decides that it can fulfill the request, it response with a `200` status code and a JSON payload, as defined by the API docs for the endpoint. + +Once the request has finished the client can then open a new request for more data. + +## Status Codes + +- `200` success +- `304` long poll timeout +- `4xx` request error +- `5xx` server error + +This list is provided to highlight the distinction between the polling timeout response and other timeout responses like + +- `[408 Request Timeout](https://httpstatuses.com/408)` +- `[504 Gateway Timeout](https://httpstatuses.com/504)` +- `[599 Network Connect Timeout Error](https://httpstatuses.com/599)` + +These other statuses should be treated as errors. + +# Research Examples + +- [Console blocking queries](https://www.consul.io/api/index.html#blocking-queries) +- [Dropbox longpoll endpoints](https://www.dropbox.com/developers/documentation/http/documentation#files-list_folder-longpoll) + +# Specifications, Blogs, and other Documents + +- [Prefer header RFC](https://tools.ietf.org/html/rfc7240#section-4.3) +- [Realtime API hub docs](https://realtimeapi.io/hub/http-long-polling/) diff --git a/docs/long-poll-flow.png b/docs/long-poll-flow.png new file mode 100755 index 0000000000000000000000000000000000000000..dc082d50ed78e0cc6728b18ac861e467f961180e GIT binary patch literal 46584 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%0D@yiAnBbZ#cji$U9~H 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 literal 0 HcmV?d00001 diff --git a/src/Poll.tsx b/src/Poll.tsx index 0ee201dd..10b52ad1 100644 --- a/src/Poll.tsx +++ b/src/Poll.tsx @@ -209,10 +209,6 @@ class ContextlessPoll extends React.Component, Readonly ({ loading: false,