Cross-Server-Nachrichten

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Normalerweise kann der Code innerhalb eines Erlebnisses nur den Server oder die Clients beeinflussen, auf dem er ausgeführt wird, aber es kann Situationen geben, in denen Sie möchten, dass sich verschiedene Server gegenseitig kommunizieren, einschließlich:

  • Globale Ankündigungen — Sende Ankündigungen wie "Ein Benutzer hat ein spezielles Artikelgefunden!" an alle Server des Erlebnisses.
  • Echtzeit-Server-Browser — Kompiliere eine Liste aller Erlebnisund wer sich darin befindet (aktualisiert jede Minute) und zeige die Liste auf maximal 20 Servern an.

Du kannst die Cross-Server-Messaging in deiner Erfahrung mit MessagingService unterstützen.Du kannst auch die Teleportation-Spielplatz-Erlebnissprobe verwenden, um zu sehen, wie die Cross-Server-Messaging funktioniert, bevor du es implementierst.Schließlich siehe hier, um die Cross-Server-Kommunikation mit externen Tools zu erkunden.

Cross-Server-Nachrichtenkonfiguration

Um die Cross-Server-Messaging zu aktivieren, musst du ein Thema einrichten, das ein benutzerdefinierter Nachrichtenkanal ist, der von mehreren Servern zugänglich ist.Nachdem du ein Thema erstellt hast, kannst du Benutzer abonnieren das Thema, um Nachrichten zu erhalten, und Veröffentlichungsnachrichten aktivieren für das Thema.

Abonnieren von Benutzern, um Nachrichten zu erhalten

Verwende MessagingService:SubscribeAsync(), um Benutzer einem Thema beizutreten und eine Rückruffunktion zu spezifizieren, die Nachrichten, die an dieses Thema veröffentlicht werden, erkennt.Zum Beispiel abonniert das folgende Codebeispiel alle Benutzer für ein FriendServerEvent -Thema, das Nachrichten empfängt, wenn ein Benutzer auf einen anderen Server teleportiert wird.


local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Abonniere das Thema
local subscribeSuccess, subscribeConnection = pcall(function()
return MessagingService:SubscribeAsync(MESSAGING_TOPIC, function(message)
print(message.Data)
end)
end)
if subscribeSuccess then
-- Abonnement vom Thema bei Änderung der Spieler-Vorfahren abbestellen
player.AncestryChanged:Connect(function()
subscribeConnection:Disconnect()
end)
end
end)

Veröffentliche Nachrichten

Verwende MessagingService:PublishAsync(), um ein bestimmtes Thema zu passen und eine Nachricht daran zu veröffentlichen.Zum Beispiel verwendet das folgende Codebeispiel PublishAsync() , um alle Benutzer zu benachrichtigen, wenn ein Benutzer sich einem neuen Server anschließt, einschließlich des Player.Name , der den Display-Namen des Benutzers darstellt, und des JobId, einer eindeutigen Kennung für die ausgeführte Instanz.


local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Veröffentlichen zum 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)