Messaggi tra server crociati

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Normalmente, il codice all'interno di un'esperienza può influenzare solo il server o i client su cui è in esecuzione, ma possono esserci situazioni in cui si desidera che diversi server comunichino tra loro, tra cui:

  • Annunci globali — Invia annunci come "Un utente ha trovato un Articolospeciale!" a tutti i server dell'esperienza.
  • Browser del server in tempo reale — Compila un elenco di tutti i server dell'esperienza e chi è in essi (aggiornato ogni minuto) e visualizza l'elenco su un massimo di 20 server.

Puoi supportare il messaggiamento cross-server nella tua esperienza utilizzando MessagingService .Puoi anche usare l'esperienza di gioco di teletrasporto Teleportation Playground di esempio per vedere come funziona il messaggiamento cross-server prima di implementarlo.Infine, vedi qui per esplorare la comunicazione cross-server utilizzando strumenti esterni.

Configurazione del messaggi cross-server

Per abilitare il messaggiamento cross-server, devi configurare un argomento che è un canale di messaggio personalizzato a cui è possibile accedere da più server.Dopo aver creato un argomento, puoi iscrivere gli utenti all'argomento per ricevere messaggi e abilitare la pubblicazione di messaggi all'argomento.

Iscrivi gli utenti per ricevere messaggi

Usa MessagingService:SubscribeAsync() per iscrivere gli utenti a un argomento e specificare una funzione di richiamo che rileva i messaggi pubblicati su quell'argomento.Ad esempio, il seguente esempio di codice iscrive tutti gli utenti a un argomento FriendServerEvent che riceve messaggi quando qualsiasi utente viene teletrasportato su un diverso Server.


local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Iscriviti al topic
local subscribeSuccess, subscribeConnection = pcall(function()
return MessagingService:SubscribeAsync(MESSAGING_TOPIC, function(message)
print(message.Data)
end)
end)
if subscribeSuccess then
-- Disiscriviti dal topic dopo il cambio dell'ascendenza del giocatore
player.AncestryChanged:Connect(function()
subscribeConnection:Disconnect()
end)
end
end)

Pubblica messaggi

Usa MessagingService:PublishAsync() per abbinare un argomento specifico e pubblicare un messaggio su di esso.Ad esempio, il seguente esempio di codice utilizza PublishAsync() per notificare a tutti gli utenti quando un utente si unisce a un nuovo Server, incluso il Player.Name che rappresenta il nome visualizzato dell'utente e il JobId, un identificatore univoco per l'istanza del server di esperienza in esecuzione.


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