92 lines
3.1 KiB
Markdown
92 lines
3.1 KiB
Markdown
|
---
|
|||
|
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 | What’s 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 >}}
|
|||
|
|
|||
|
|