documentation/content/en/methods/timelines/streaming.md

92 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: streaming
description: >-
Subscribe to server-sent events for real-time updates via a long-lived HTTP
connection or via WebSocket.
menu:
docs:
weight: 40
parent: methods-statuses
---
Your application can use a [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events) endpoint to receive updates in real-time. Server-sent events is an incredibly simple transport method that relies entirely on chunked-encoding transfer, i.e. the HTTP connection is kept open and receives new data periodically.
Alternatively, a WebSocket connection can also be established.
## Server-sent events \(HTTP\) <a id="server-sent-events-http"></a>
### Endpoints <a id="endpoints"></a>
#### GET /api/v1/streaming/health <a id="get-api-v1-streaming-health"></a>
Returns `OK` when streaming service is fine. Added in 2.5.0
#### GET /api/v1/streaming/user <a id="get-api-v1-streaming-user"></a>
Returns events that are relevant to the authorized user, i.e. home timeline and notifications
#### GET /api/v1/streaming/public <a id="get-api-v1-streaming-public"></a>
Returns all public statuses
#### GET /api/v1/streaming/public/local <a id="get-api-v1-streaming-public-local"></a>
Returns all local statuses
#### GET /api/v1/streaming/hashtag?tag=:hashtag <a id="get-api-v1-streaming-hashtag-tag-hashtag"></a>
Returns all public statuses for a particular hashtag
#### GET /api/v1/streaming/hashtag/local?tag=:hashtag <a id="get-api-v1-streaming-hashtag-local-tag-hashtag"></a>
Returns all local statuses for a particular hashtag
#### GET /api/v1/streaming/list?list=:list_id <a id="get-api-v1-streaming-list-list-list-id"></a>
Returns statuses for a list
#### GET /api/v1/streaming/direct <a id="get-api-v1-streaming-direct"></a>
Returns all direct messages
### Stream contents <a id="stream-contents"></a>
The stream will contain events as well as heartbeat comments. Lines that begin with a colon \(`:`\) can be ignored by parsers, they are simply there to keep the connection open. Events have this structure:
```text
event: name
data: payload
```
## WebSocket <a id="websocket"></a>
For WebSockets, there is only one URL path \(`/api/v1/streaming`\). The access token as well as the endpoint you are interested in must be provided with query params, respectively `access_token` and `stream`. Query params `list` and `tag` are likewise supported for relevant endpoints.
Possible `stream` values:
* `user`
* `public`
* `public:local`
* `hashtag`
* `hashtag:local`
* `list`
* `direct`
## Event types <a id="event-types"></a>
| Event | Description | Whats in the payload |
| :--- | :--- | :--- |
| `update` | A new status has appeared | [Status]({{< relref "../../entities/status.md" >}}) |
| `notification` | A new notification has appeared | [Notification]({{< relref "../../entities/notification.md" >}}) |
| `delete` | A status has been deleted | ID of the deleted status |
| `filters_changed` | Keyword filters have been changed | |
The payload is JSON-encoded.
{{< hint style="info" >}}
In case of `filters_changed` event, `payload` is not defined.
{{< /hint >}}