Mensagens entre servidores

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Normalmente, o código dentro de um jogo pode afetar apenas o servidor ou os clientes que está em execução, mas pode haver situações em que você deseja que diferentes servidores se comuniquem entre si, incluindo:

  • Anúncios Globais — Envie anúncios como "Um usuário encontrou um item especial!" para todos os servidores do jogo.
  • Navegador de Servidores em Tempo Real — Compile uma lista de todos os servidores do jogo e quem está neles (atualizada a cada minuto) e exiba a lista em um máximo de 20 servidores.

Você pode apoiar mensagens entre servidores no seu jogo usando MessagingService. Você também pode usar o jogo de exemplo Teleportation Playground para ver como as mensagens entre servidores funcionam antes de implementá-las. Por fim, veja aqui para explorar a comunicação entre servidores usando ferramentas externas.

Configuração de mensagens entre servidores

Para habilitar mensagens entre servidores, você deve configurar um tópico, que é um canal de mensagem personalizado acessível a partir de múltiplos servidores. Depois de criar um tópico, você pode inscrever usuários no tópico para receber mensagens e habilitar publicação de mensagens para o tópico.

Inscrever usuários para receber mensagens

Use MessagingService:SubscribeAsync() para inscrever usuários em um tópico e especificar uma função de callback que detecta mensagens publicadas nesse tópico. Por exemplo, o seguinte exemplo de código inscreve todos os usuários em um tópico FriendServerEvent que recebe mensagens quando qualquer usuário é teletransportado para um servidor diferente.


local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Inscrever-se no tópico
local subscribeSuccess, subscribeConnection = pcall(function()
return MessagingService:SubscribeAsync(MESSAGING_TOPIC, function(message)
print(message.Data)
end)
end)
if subscribeSuccess then
-- Cancelar inscrição do tópico ao mudar a ancestralidade do jogador
player.AncestryChanged:Connect(function()
subscribeConnection:Disconnect()
end)
end
end)

Publicar mensagens

Use MessagingService:PublishAsync() para corresponder a um tópico específico e publicar uma mensagem nele. Por exemplo, o seguinte exemplo de código usa PublishAsync() para notificar todos os usuários quando um usuário se junta a um novo servidor, incluindo o Player.Name representando o nome de exibição do usuário e o JobId, um identificador exclusivo para a instância do servidor de jogo em execução.


local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Publicar no tópico
local publishSuccess, publishResult = pcall(function()
local message = player.Name .. " entrou no servidor com 'JobId' de " .. game.JobId
MessagingService:PublishAsync(MESSAGING_TOPIC, message)
end)
if not publishSuccess then
print(publishResult)
end
end)
©2026 Roblox Corporation, Roblox, o logotipo Roblox e Powering Imagination estão entre nossas marcas registradas e não registradas nos EUA e em outros países.