Messaging między serwerami

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Zwykle kod w obszarze doświadczenia może wpływać tylko na serwer lub klienty, na których biega, ale może być sytuacja, w której chcesz, aby różne serwery komunikowały się ze sobą, w tym:

  • Główne ogłoszenia — Wysyłaj ogłoszenia, takie jak „Użytkownik znalazł specjalny przedmiot!”, do wszystkich serwerów doświadczenia.
  • Przeglądarka serwera w czasie rzeczywistym — Kompiluj listę wszystkich serwerów doświadczenia i kto jest w nich (aktualizowany co minutę) i wyświetl listę na maksymalnie 20 serwerach.

Możesz wspierać wiadomości między serwerami za pomocą MessagingService. Możesz również użyć przykładu doświadczenia Teleportation Playground, aby zobaczyć, jak działa wiadomości między serwerami, zanim je wdrożysz. A na koniec, zobacz tutaj, aby zbadać komunikację między serwerami za pomocą narzędzi zewnętrznych.

Konfiguracja wysyłania między serwerami

Aby włączyć wysyłanie wiadomości między serwerami, musisz skonfigurować temat , który jest niestandardowym kanałem wiadomości, który jest dostępny z wielu serwerów. Po utworzeniu tematu możesz subskrybować użytkowników do tematu, aby otrzymywać wiadomości i włączyć publikowanie wiadomości do tematu.

Subskrybowanie użytkowników, aby otrzymywać wiadomości

Użyj MessagingService:SubscribeAsync() , aby subskrybować użytkowników na temat i określić funkcję zwrotną, która wykrywa publikację wiadomości na ten temat. Na przykład, poniższy kod przykładowy subskrybuje wszystkich użytkowników na temat FriendServerEvent , który otrzymuje wiadomości, gdy każdy serwerjest teleportowany na in


local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Subskrybuj temat
local subscribeSuccess, subscribeConnection = pcall(function()
return MessagingService:SubscribeAsync(MESSAGING_TOPIC, function(message)
print(message.Data)
end)
end)
if subscribeSuccess then
-- Odznacz od tematu na rzecz zmiany pokolenia gracza
player.AncestryChanged:Connect(function()
subscribeConnection:Disconnect()
end)
end
end)

Publikowanie wiadomości

Użyj MessagingService:PublishAsync() , aby zgadzać się z konkretnym tematem i opublikować wiadomość do niego. Na przykład, poniższy kod przykładowy używa PublishAsync()


local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Publikuj do tematu
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)