jointrashposs/content/fr/.docs-legacy/api/streaming/index.md
2023-07-11 23:48:17 +09:00

5.9 KiB
Raw Blame History

description
LAPI de flux fournit des informations en temps réel (ex : nouvelles notes, réactions, abonnements, etc…) ainsi que dautres opérations.

API de flux

:::tip Assurez-vous davoir lu la documention API Misskey au préalable. :::

LAPI de flux fournit des informations en temps réel (ex : nouvelles notes, réactions, abonnements, etc…) ains que dautres opérations.

Se connecter au flux

Pour utiliser lAPI vous devez vous connecter au serveur Misskey via websocket.

LURL de celui-ci ressemble à :

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

  • {host} est le nom de lhôte de linstance ;
  • {token} est la clé daccès.

:::tip Vous pouvez vous connecter sans clé daccès, mais cela limitera les informations reçues et les opérations possibles. :::

Une fois la connexion établie, vous pourrez vous abonner aux publications décrites ci-dessous. Il nest pas encore possible, par exemple, de recevoir les nouvelles publications de votre fil.

Pour recevoir ces évènements, vous devez rejoindre un canal sur le flux, tel que décrit ci-dessous.

Toutes les données sont au format JSON

Canal

LAPI de flux Misskey utilise un concept de canaux. Ce mécanisme sépare les informations reçus et envoyées. En rejoignant des canux, vous aurez la possibilité de recevoir et envoyer de nombreuses informations.

:::tip Vous pouvez rejoindre plusieurs canaux simultanément via un flux unique. :::

Les sections suivantes décrivent comment utiliser les canaux. Pour voir quels canaux sont disponible, se référer à la liste des canaux.

Rejoindre un canal

Pour rejoindre un canad, envoyez les données JSON suivant sur le flux :

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

  • channel est le nom du canal auquel se connecter. Les type de canaux sont décrits par la suite ;
  • id est un identifiant arbitraire pour interragir avec ce canal. Il est nécessaire pour identifier de quel canal le message provient, un flux pouvant contenir différent canaux. Cet identifiant peut être un UUID ou un nombre aléatoire ;
  • params sont les paramètres requis pour rejoindre un canal. Chaque canal requiert des paramètres propres. Si un canal nen demande pas, alors cette propriété peut être laissée vide.

:::tip Lidentifiant nest pas unique par canal mais par connexion car un canal peut être utilisé plusieurs fois avec différents paramètres. :::

Recevoir des messages de canaux

Lors de la réception dun message indiquant une nouvelle publication sur un canal, vous saurez en temps réel quune nouvelle publication est disponible sur votre fil.

Quand un canal génère un message, les données JSON suivantes sont envoyées :

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

  • id est lidentifiant utilisé lors de la connexion au canal. Cela vous permet de savoir de quel canal le message vient ;
  • type est le type de message. Selon le canal, celui-ci diffère ;
  • body contient le contenu du message, celui-ci diffère selon le canal.

Envoyer un message via un canal

Sur certains canaux, il est également possible denvoyer des messages et deffectuer dautres opérations en plus de la réception.

Pour envoyer un message à un canal, envoyez les données JSON suivantes :

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

  • id est lidentifiant utilisé lors de la connexion au canal. Cela vous permet dindiquer à quel canal le message est destiné ;
  • type est le type de message, celui-ci diffère selon les canaux ;
  • body contient le corps du message, celui-ci diffère selon les canaux.

Se déconnecter dun canal

Pour se déconnecter dun canal, envoyez les données JSON suivantes :

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

  • id est lidentifiant utilisé lors de la connexion au canal. Cela permet dindiquer de quel canal se déconnecter.

Capturer des notes

Misskey propose un mécanisme de capture de note. Cela permet de recevoir un flux dévènements pour une note spécifique.

Par exemple, si vous affichez un fil et quune personne réagit à une des publications, le client ne peut pas savoir de quelle publication il sagit et il nest pas possible dafficher la réaction en temps réel.

En capturant une note, vous recevrez les évènements qui y sont liés, et pourrez afficher les réactions en temps réel.

La section suivante décrit lusage de cette fonction. Pour voir les type dévènements sont capturables, vour la liste.

Capturer une note

Pour capturer une note, envoyer les données JSON suivantes :

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

  • id est lidentifiant de la note à capturer.

En envoyant ce message, vous demandez à Misskey de capturer la note, et les évènements qui y sont liés vous seront relayés.

Si une note reçoit une réacton, vous recevrez un message au format suivant :

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

  • body.id est lidentifiant de la note ;
  • body.type est letype dévènement ;
  • body.body contient les détails de lévènement.

Dé-capturer une note

Pour ne plus recevoir dévènements liés à une note, par exemple si celle-ci nest plus affichée à lécran. envoyez les données JSON suivantes :

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

  • id est lidentifiant de la note.

Une fois ce message envoyé, les évènements liés à cette note ne vous seront plus transmises.