Normalerweise kann der Code innerhalb eines Erlebnisses nur auf den Servern oder Clients, auf denen er ausgeführt wird, wirken, aber es können Situationen sein, in denen Sie verschiedenen Servern ermöchten, miteinander zu kommunizieren, einschließlich:
- Globale Ankündigungen — Senden Sie Ankündigungen wie "Ein Benutzer hat ein spezielles Artikelgefunden!" an alle Server der Erlebnis.
- Echtzeit-Server-Browser — Komпилиere eine Liste aller Erlebnisse-Server und wer in ihnen ist (aktualisiert jede Minute) und zeige die Liste auf bis zu 20 Servern an.
Du kannst Cross-Server-Messaging in deiner Erfahrung unterstützen, indem du MessagingService verwendest. Du kannst auch die Teleportation-Spielplatz-Erfahrung-Beispiel-Erfahrung verwenden, um zu sehen, wie Cross-Server-Messaging funktioniert, bevor du es implementierst. Zudem siehe hier, um Cross-Server-Kommunikation mit externen Werkzeugen zu erkunden.
Cross-Server-Messaging-Einstellungen
Um Cross-Server-Messaging zu aktivieren, musst du ein Thema einrichten, das ein benutzerdefiniertes Nachrichten-Kanal ist, der von mehreren Servern aus zugänglich ist. Nachdem du ein Thema erstellt hast, kannst du Benutzer an das Thema abonnieren, um Nachrichten zu erhalten, und Veröffentlichungsnachrichten an das Thema aktivieren, um Nachrichten zu veröffentlichen.
Benutzer abonnieren, um Nachrichten zu erhalten
Verwenden Sie MessagingService:SubscribeAsync() , um Benutzer zu einem Thema zu abonnieren und eine Rückruffunktion zu spezifizieren, die Nachrichten veröffentlicht, wenn ein Benutzer zu einem anderen Server teleportiert wird. Zum Beispiel, der folgende Code-Beispiel subskribiert alle Benutzer zu einem FreundServer-Ereignis -Thema, das Nachrichten empfängt, wenn ein Benutzer zu einem anderen Server teleportiert wird.
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Abonnieren Sie das Thema
local subscribeSuccess, subscribeConnection = pcall(function()
return MessagingService:SubscribeAsync(MESSAGING_TOPIC, function(message)
print(message.Data)
end)
end)
if subscribeSuccess then
-- Abonnieren Sie das Thema von der Spielzeug-Anpassung
player.AncestryChanged:Connect(function()
subscribeConnection:Disconnect()
end)
end
end)
Veröffentlichen von Nachrichten
Verwenden Sie MessagingService:PublishAsync() , um ein bestimmtes Thema zu entsprechen und eine Nachricht an es zu veröffentlichen. Zum Beispiel verwendet der folgende Code-Beispiel PublishAsync() , um alle Benutzer zu benach
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Veröffentlichen zu Thema
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)