Aller au contenu

Connecteur d'exemple

Le dépôt contient example-connector/, un petit programme Node.js et TypeScript. Il lit de faux joueurs depuis un fichier JSON et les synchronise avec Inari, ce qui est pratique pour tester une installation ou apprendre le protocole avant d’écrire un vrai connecteur.

Fenêtre de terminal
cd example-connector
npm install

Créez un fichier .env :

example-connector/.env
INARI_URL=ws://localhost:3030/ws
INARI_API_KEY=MySuperApiKey
INARI_CHANNEL=default

Démarrez Inari avec la même API_KEY, puis :

Fenêtre de terminal
npm start

Vous devriez voir :

WS > Connection Open !
Welcome on Inari 1.0.0. Max Distance set to 20 !

Si vous obtenez Authentification Error, la clé d’API ne correspond pas.

Les joueurs viennent de src/data.json, relu à chaque synchronisation : vous pouvez donc le modifier pendant que le connecteur tourne :

example-connector/src/data.json
[
{
"code": "user11",
"display_name": "User 11",
"is_force_muted": false,
"position": [0, 0, 0],
"head": [1, 0, 0]
},
{
"code": "user22",
"display_name": "User 22",
"is_force_muted": false,
"position": [0, 0, 0],
"head": [1, 0, 0]
}
]
  1. Ouvrez http://localhost:3030/?channel=default&code=user11 dans un navigateur.
  2. Ouvrez http://localhost:3030/?channel=default&code=user22 dans un autre (ou une fenêtre privée).
  3. Modifiez la position d’un joueur dans data.json et observez la voix baisser, puis disparaître au-delà de MAX_DISTANCE.
  4. Passez is_force_muted à true, ou donnez-leur un group différent, pour les réduire au silence.

src/main.ts fait environ 70 lignes :

  • call(kind, data) envoie un message avec un nouveau transaction_uuid et renvoie une promesse résolue à l’arrivée de la réponse portant le même UUID.
  • À l’open, il envoie auth avec is_connector: true. Une réponse error ferme la connexion.
  • Une fois authentifié, setInterval appelle sync_connector_state toutes les 300 ms avec les joueurs, et affiche les connections renvoyées.
  • Quand la socket se ferme, le processus s’arrête, afin qu’un superviseur (systemd, Docker, pm2) puisse le relancer.

src/type.d.ts contient les types TypeScript de tous les messages. Copiez-le dans votre projet.

Remplacez la lecture de data.json par la liste des joueurs de votre jeu. Conservez le reste : authentification, synchronisation régulière et reconnexion. Le même protocole fonctionne depuis n’importe quel langage disposant d’un client WebSocket (Java pour les plugins Minecraft, Lua, C#…). Voir la référence du protocole.