Le module packetManager est un outil conçu pour gérer les abonnements et les envois de paquets (packets) dans un environnement Lua. Il permet de souscrire à des paquets spécifiques, de définir des fonctions de rappel (callbacks) pour traiter ces paquets, et d'envoyer des paquets selon vos besoins. Ce module facilite la gestion des communications asynchrones en automatisant les processus d'abonnement et de désabonnement.
Le module packetManager est conçu comme un singleton, ce qui signifie qu'il n'est instancié qu'une seule fois et partagé à travers tout votre script. Après l'avoir chargé via le ModuleLoader, vous pouvez l'utiliser directement sans avoir besoin de le ré-instancier.
Chargement du module
Pour commencer, vous devez charger le module packetManager avec le ModuleLoader :
-- Chargement du ModuleLoader
ModuleLoader = dofile(global:getCurrentDirectory() .. [[\YayaToolsTouch\Module\ModuleLoader.lua]])(1)
-- Chargement du module packetManager
packetManager = ModuleLoader:load("packetManager")
Note : Le module packetManager est un singleton, il n'est donc pas nécessaire de l'appeler comme une fonction après le chargement.
Le module packetManager fournit les méthodes clés suivantes pour gérer les abonnements et les envois de paquets :
Souscrit à un paquet spécifique et associe une fonction de rappel pour le traiter lorsqu'il est reçu.
Syntaxe
packetManager:subscribePacket(packetName, callback)
Paramètres
Retourne
Exemple
packetManager:subscribePacket("GameActionMessage", function(msg)
-- Traitement du message reçu
print("Message reçu :", msg)
end)
Désinscrit du paquet spécifié, arrêtant ainsi la réception des messages associés.
Syntaxe
packetManager:unsubscribePacket(packetName)
Paramètres
Retourne
Exemple
packetManager:unsubscribePacket("GameActionMessage")
Gère les abonnements et désabonnements multiples aux paquets en une seule opération. Vous pouvez souscrire ou vous désinscrire de plusieurs paquets en passant une table où chaque clé est le nom du paquet et la valeur est soit la fonction de rappel (pour s'abonner), soit nil (pour se désabonner).
Syntaxe
packetManager:subscribeMultipePackets(packetsTable)
Paramètres
Retourne
Exemple
packetManager:subscribeMultipePackets({
["GameActionMessage"] = function(msg)
print("Action de jeu reçue :", msg)
end,
["ChatMessage"] = function(msg)
print("Message de chat reçu :", msg)
end,
["DisconnectMessage"] = nil -- Se désinscrire de ce paquet
})
Envoie un paquet au serveur. Vous pouvez éventuellement modifier le message du paquet avant l'envoi en fournissant une fonction de modification.
Syntaxe
packetManager:sendPacket(packetName, modifyFunction)
Paramètres
Retourne
Exemple
packetManager:sendPacket("ChatSendMessage", function(msg)
msg.content = "Bonjour à tous !"
return msg
end)
Dans cet exemple, nous envoyons un message de chat avec le contenu spécifié.
Voici un exemple illustrant comment utiliser le module packetManager pour gérer des abonnements multiples et envoyer des paquets :
-- Chargement du ModuleLoader
ModuleLoader = dofile(global:getCurrentDirectory() .. [[\YayaToolsTouch\Module\ModuleLoader.lua]])(1)
-- Chargement des modules requis
packetManager = ModuleLoader:load("packetManager")
Logger = ModuleLoader:load("Logger")(1)
-- Souscription à plusieurs paquets
packetManager:subscribeMultipePackets({
["ChatMessage"] = function(msg)
Logger:info("Message de chat reçu : " .. msg.content)
end,
["GameActionMessage"] = function(msg)
Logger:info("Action de jeu détectée : " .. msg.actionId)
end
})
-- Envoi d'un paquet avec modification
packetManager:sendPacket("ChatSendMessage", function(msg)
msg.content = "Ceci est un message automatisé."
return msg
end)
-- Plus tard dans le script, désabonnement d'un paquet spécifique
packetManager:unsubscribePacket("GameActionMessage")
Si vous rencontrez des problèmes ou avez des questions concernant le module linkedList :