Api strumieniowe

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.

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.

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ć.

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ą.