MessagingService
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
MessagingService permet aux serveurs de la même expérience de communiquer entre eux en temps réel (moins de 1 seconde) en utilisant des sujets.Les sujets sont des chaînes définies par le développeur (1–80 caractères) que les serveurs utilisent pour envoyer et recevoir des messages.
La livraison est le meilleur effort et non garanti. Assurez-vous d'architecturer votre expérience de sorte que les échecs de livraison ne soient pas critiques.
Messagerie entre serveurs explore comment communiquer entre serveurs plus en détail.
Si vous souhaitez publier des messages ad hoc sur des serveurs de jeu en direct, vous pouvez utiliser les Open Cloud APIs.
Limites
Notez que ces limites sont sujettes à changement.
<th>Maximum</th></tr></thead><tbody><tr><td><b>Taille du message</b></td><td>1kB</td></tr><tr><td><b>Messages envoyés par serveur de jeu</b></td><td>600 + 240 \* (nombre de joueurs sur ce serveur de jeu) par minute</td></tr><tr><td><b>Messages reçus par sujet</b></td><td>(40 + 80 \* nombre de serveurs) par minute</td></tr><tr><td><b>Messages reçus pour toute la partie</b></td><td>(400 + 200 \* nombre de serveurs) par minute</td></tr><tr><td><b>Abonnements autorisés par serveur de jeu</b></td><td>20 + 8 \* (nombre de joueurs sur ce serveur de jeu)</td></tr><tr><td><b>S'abonner aux demandes par serveur de jeu</b></td><td>240 demandes par minute</td></tr></tbody>
Limite |
---|
Résumé
Méthodes
Invoque le rappel fourni chaque fois qu'un message est poussé dans le sujet.
Commence à écouter le sujet donné.
Propriétés
Méthodes
PublishAsync
Cette fonction envoie le message fourni à tous les abonnés au sujet, déclençant l'invocation de leurs rappels enregistrés.
Rendements jusqu'à ce que le message soit reçu par le backend.
Paramètres
Détermine où le message est envoyé.
Les données à inclure dans le message.
Retours
SubscribeAsync
Cette fonction enregistre un rappel pour commencer à écouter le sujet donné.Le rappel est invoqué lorsqu'un sujet reçoit un message.Il peut être appelé plusieurs fois pour le même sujet.
Rappel
Le rappel est invoqué avec un seul argument, une table avec les entrées suivantes :
<th>Sommaire</th></tr></thead><tbody><tr><td><b>Données</b></td><td>Chargement fourni par le développeur</td></tr><tr><td><b>Envoyé</b></td><td>Heure Unix en secondes à laquelle le message a été envoyé</td></tr></tbody>
Domaine |
---|
Il produit jusqu'à ce que l'abonnement soit correctement enregistré et renvoie un objet de connexion.
Pour vous désabonner, appelez Disconnect() sur l'objet retourné.Une fois appelé, le rappel ne doit jamais être invoqué.Tuer le script contenant les connexions provoque également l'annulation de l'abonnement à la connexion sous-jacente.
Voir aussi MessagingService:PublishAsync() qui envoie le message fourni à tous les abonnés au sujet, déclençant l'invocation de leurs rappels enregistrés.
Paramètres
Détermine où écouter les messages.
Fonction à invoquer chaque fois qu'un message est reçu.
Retours
Connexion qui peut être utilisée pour se désabonner du sujet.
Échantillons de code
This example demonstrates how to use MessagingService:SubscribeAsync() to listen to a topic for cross-server chat within a game universe.
When a player joins, the example subscribes to the topic player-<player.UserId>. When a message is sent with this topic, the connected callback executes and prints Received message for <player.Name">. It also disconnects the connection when the player's ancestry changes.
In order for this to work as expected it must be placed in a server Script.
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local function onPlayerAdded(player)
--subscribe to the topic
local topic = "player-" .. player.UserId
local connection = MessagingService:SubscribeAsync(topic, function(message)
print("Received message for", player.Name, message.Data)
end)
player.AncestryChanged:Connect(function()
-- unsubscribe from the topic
connection:Disconnect()
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)