Aller au contenu principal

Connexions indépendantes

Dans le premier cas, on est actuellement obligé d’implémenter un acteur de zéro ou héritant de la classe contenant la logique non communicante. Pour standardiser ça, on crée un Actor Component qui embarquera toute la logique de communication.

UModuleCommComponent

On nomme celui-ci UModuleCommComponent, il contient :

Fonctions

  • FString AuthenticateHTTP(FString URL) : émet une requête d’authentification et renvoie un token pour le module
  • FHttpResponsePtr SendHttpRequest(FString URL, FString Verb, FString Content) : émet une requête à URL avec Verb et en corps le Json Content
  • Pure virtual void CreateWebsocket (Fstring URL) : crée la websocket, le token peut être utilisé dans l’URL pour servir d’authentifiant (pure virtual car elle est totalement dépendante de la logique du module)
  • Void ConnectWebsocket() : lance la connexion websocket créée
  • Void SendMessage(FString msg) : envoie msg sur la websocket si prête à la communication
  • Void Ping() : utile pour maintenir des connexions limitées
Amélioration

FHTTPResponsePtr est issu du module HTTP d'Unreal. Lorsqu'une classe héritant de UMessageHandlerGISubsystem reçoit cet objet, il fait appel à des fonctions de ce module pour l'interpréter (ex. response->GetContentAsString()). On pourrait directement traduire l'objet dans un FStruct personnalisée plus facile de lecture et plus propre à échanger.

Variables

  • FString Token : token du module, permettant d’identifier l’instance du module
  • FString AuthToken : token d’autorisation initial, par exemple celui de l’acteur à l’origine de la création, permet de retrouver tous les modules qui y sont liés
  • Float PingDelay : intervalle entre les appels de Ping(), une valeur nulle vaut OnTick(), négative vaut jamais.
  • FString ModuleType : type de module, utile pour déterminer s’il est supporté par l’API

Pour chaque nouveau système dépendant d’une connexion indépendante, on crée un nouvel Actor Component qui hérite de UModuleCommComponent.