jointrashposs/content/pl-PL/docs/api/streaming/index.md
kakkokari-gtyih 8e52c51c49 wip
2023-07-08 17:36:02 +09:00

6.0 KiB

description
Strumieniowe API podaje informacje w czasie rzeczywistym (np: nowe posty na ośi czasu, reakcje, obserwujący itp.) i wiele innych

Api strumieniowe

::: tip Na początek powinieneś przeczytać dokumentację API Misskey. :::

Strumieniowe API podaje informacje w czasie rzeczywistym (np: nowe posty na ośi czasu, reakcje, obserwujący itp.) i wiele innych.

Łączenie

Aby używać API strumieniowego, musisz połączyć się z serwerem Misskey za pomocą websocket.

O to przykładowy URL Websocketu:

wss://{host}/streaming?i={token}

gdzie:

  • {host} instancja z którą chcesz się połączyć.
  • {token} token dostępowy użytkownika.

::: tip Możesz też się połączyć bez tokenu dostępu ale nie będziesz miał dostępu do wszystkich danych. :::

Kiedy połączyłeś się, możesz subskrybować do postów opisanych poniżej, ale nadal nie możesz odtrzymywać nowych postów na ośi czasu

Aby odtrzymywać takie zdarzenia musisz połączyć się z kanałem jak opisano poniżej.

Wszystkie dane powinny być w JSONie.

Kanał

API Strumieniowe Miskey używa kanałów. Jest to mechanizm do oddzielania informacji do wysłania i odbioru. Dołączając na kanał na strumieniu, będziesz mógł otrzymywać różne rodzaje informacji i wysyłać informacje.

::: tip Możesz dołączyć do wielu kanałów na jednym strumieniu :::

Ta sekcja opisuje jak używać kanałów. Aby sobaczyć jakie kanały są dostępne, zapoznaj się z listą kanałów.

Dołączanie do kanału

Dołączając do kanału, wysyłasz strumieniem podane dane w JSONie:

{
 type: 'connect',
 body: {
  channel: 'xxxxxxxx',
  id: 'foobar',
  params: {
   ...
  }
 }
}

gdzie

  • channel to nazwa kanału z którym chcesz się połączyć. Rodzaje kanałów są opisane niżej w tym dokumencje.
  • id jest to arbitralne ID do wykonywania interakcji z kanałem. Jest ono wymagane do identyfikowania, z którego kanału jest wiadomość, ponieważ strumień zawiera wiele kanałów. To ID może być czymś w stylu UUID albo losową liczbą.
  • params to parametry wymagane kiedy dołącza się na kanał. Różne kanały wymagają innych parametrów przy połączeniu. Kiedy kanał nie wymaga parametrów, można tą wartość zignorować.

::: tip ID nie jest co kanał, a co połączenie z kanałem, ponieważ kanał może być potrzebny kilka razy ale z innym parametrem. :::

Zdobywanie wiadomości z kanałów

Na przykłąd, oś czasu kanału wyśle wiadomość kiedy jest nowy post. Zdobywając wiadomość, możesz wiedzieć w czasie rzeczywistym że nowy post został opublikowany na twojej ośi casu.

Kiedy kanał wysyła wiadomość, podany JSON jest wysłany:

{
 type: 'channel',
 body: {
  id: 'foobar',
  type: 'something',
  body: {
   some: 'thing'
  }
 }
}

gdzie

  • id to ID ustawionie kiedy łączono z kanałem jak podano wyżej. Pozwala wiedzieć z którego kanału jest wiadomość
  • type to jest rodzaj wiadomości. Rodzaje wiadomości zależą od tgo co jest wysyłane na kanał.
  • body zawiera zawartość wiadomości. Zawartość zależy od kanału.

Wysyłanie wiadomości na kanał

Na niektórych kanałach jest możliwość wysyłąnia wiadomości i wykonywania innych operacji poza zdobywaniem wiadomości.

Aby wysłać wiadomość, wyślij podane dane w JSONie na strumień:

{
 type: 'channel',
 body: {
  id: 'foobar',
  type: 'something',
  body: {
   some: 'thing'
  }
 }
}

gdzie:

  • id to ID ustawionie kiedy łączono z kanałem jak podano wyżej. Pozwala wiedzieć dla którego kanału jest to wiadomość.
  • type to jest rodzaj wiadomości. Rodzaje wiadomości zależą od kanału.
  • body zawiera zawartość wiadomości. Zawartość zależy od kanału.

Rozłączanie się z kanału

Aby się rozłączyć z kanału (instantiation), wyślij podane dane JSONem na strumień:

{
 type: 'disconnect',
 body: {
  id: 'foobar'
 }
}

where

  • id to ID kanału do którego się łączyłeś i z którego chcesz się rozłączyć.

Wyłapywanie postów

Misskey udostępnia mechanizm zwany przechwytywaniem postów. Jest to zdolność do otrzymania strumienia zdarzeń dla danego wpisu.

Na przykład, powiedzmy, że chwytasz oś czasu i wyświetlasz ją swoim użytkownikom. Powiedzmy, że ktoś reaguje na jeden z postów na osi czasu. Ponieważ jednak klient nie ma sposobu, aby wiedzieć, że notka została zareagowana, nie jest możliwe odzwierciedlenie reakcji na osi czasu w czasie rzeczywistym.

Aby rozwiązać ten problem, Misskey zapewnia mechanizm przechwytywania wpisów. Gdy przechwycisz notkę, otrzymasz zdarzenia związane z tą notką i możesz wyświetlić reakcje na nią w czasie rzeczywistym.

W kolejnych rozdziałach opisano, jak korzystać z funkcji przechwytywania notek. Aby zobaczyć, jakie zdarzenia przechwytywania są dostępne, zobacz listę Capture Events List.

Wyłapanie posta

Aby wyłapać post wyślij JSON na strumień:

{
 type: 'subNote',
 body: {
  id: 'xxxxxxxxxxxxxxxx'
 }
}

gdzie

  • id to ID posta do wyłapania.

Kiedy wysyłasz wiadomość, prosisz Misskey o przechwycenie notki, a następnie zdarzenia związane z tą notką będą przesyłane do ciebie.

Na przykład jak odtrzymasz reakcje to odtrzymasz taką odpowiedź JSONem

{
 type: 'noteUpdated',
 body: {
  id: 'xxxxxxxxxxxxxxxx',
  type: 'reacted',
  body: {
   reaction: 'like',
   userId: 'yyyyyyyyyyyyyyyy'
  }
 }
}

gdzie

  • body.id to ID posta które spowodowało zdarzenie.
  • body.type typ zdarzenia.
  • body.body informacje o zdarzeniu.

Usuwanie przechwytywania posta

Jeśli nie chcesz już otrzymywać zdarzeń związanych z postem, np. gdy nie pojawia się ona już na ekranie, możesz usunąć żądanie przechwycenia.

Wyślij następujące dane JSON: ``js { type: 'unsubNote', body: { id: 'xxxxxxxxxxxxxx' } }


gdzie
- `id` to ID notatki, którą chcesz odhaczyć.

Po wysłaniu tej wiadomości nie będą już wysyłane żadne zdarzenia związane z tą notką.