Normalement, le code dans une expérience ne peut affecter que le serveur ou les clients sur lequel il s'exécute, mais il peut y avoir des situations dans lesquelles vous voulez que différents serveurs communiquent entre eux, y compris :
- Annonces globales — Envoyez des annonces telles que « Un utilisateur a trouvé un itemspécial ! » à tous les serveurs de l'expérience.
- Navigateur de serveur en temps réel — Compilez une liste de tous les serveurs de l'expérience et qui est dans eux (mis à jour chaque minute) et affichez la liste sur un maximum de 20 serveurs.
Vous pouvez prendre en charge le messagerie entre serveurs en utilisant MessagingService. Vous pouvez également utiliser l'expérience d'essai de Teleportation Playground pour voir comment le messagerie entre serveurs fonctionne avant d'y implémenter. Enfin, voir ici pour explorer la communication entre serveurs à l'aide de ressources externes.
Configuration de messagerie entre serveurs
Pour activer le messagerie entre serveurs, vous devez configurer un sujet qui est un canal de message personnalisé qui est accessible à plusieurs serveurs. Après avoir créé un sujet, vous pouvez s'abonner aux utilisateurs au sujet pour recevoir des messages et activer la publication de messages au sujet.
S'abonner aux utilisateurs pour recevoir des messages
Utilisez MessagingService:SubscribeAsync() pour abonner les utilisateurs à un sujet et spécifier une fonction d'appel qui détecte les messages qui sont téléchargés sur ce sujet. Par exemple, le code suivant montre que tous les utilisateurs s'abonnent à un sujet FrenServerEvent qui reçoit des messages lorsque tout utilisateur est téléporté sur un autre serveur.
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- S'abonner au sujet
local subscribeSuccess, subscribeConnection = pcall(function()
return MessagingService:SubscribeAsync(MESSAGING_TOPIC, function(message)
print(message.Data)
end)
end)
if subscribeSuccess then
-- Désabonner du sujet lorsque le changement d'ancêtres du joueur
player.AncestryChanged:Connect(function()
subscribeConnection:Disconnect()
end)
end
end)
Publier des messages
Utilisez MessagingService:PublishAsync() pour correspondre à un sujet spécifique et publier un message à ce sujet. Par exemple, le code suivant utilise PublishAsync() pour notifier tous les utilisateurs lorsqu'un utilisateur rejoint un nouveau
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Publier au sujet
local publishSuccess, publishResult = pcall(function()
local message = player.Name .. " joined server with 'JobId' of " .. game.JobId
MessagingService:PublishAsync(MESSAGING_TOPIC, message)
end)
if not publishSuccess then
print(publishResult)
end
end)