Normalmente, el código dentro de una experiencia solo puede afectar al servidor o clientes en los que se está ejecutando, pero puede haber situaciones en las que desee que diferentes servidores se comuniquen entre sí, que incluyen:
- Chat entre Servidores Permite a los usuarios chatear entre sí incluso si no están en el mismo servidor, asumiendo un máximo de unos 20 jugadores.
- Anuncios Globales Envía anuncios como "¡Un usuario encontró un objeto especial!" a todos los servidores de la experiencia.
- Navegador de servidor en tiempo real Compila una lista de todos los servidores de la experiencia y quién está en ellos (se actualiza cada minuto) y muestra la lista en un máximo de 20 servidores.
Puedes admitir mensajes entre servidores en tu experiencia usando MessagingService . También puedes usar la Teleportation Playground experiencia de muestra para ver cómo funciona el mensaje entre servidores antes de implementarlo. Por último, consulta aquí para explorar la comunicación entre servidores usando herramientas externas.
Configuración de Mensajería entre Servidores
Para habilitar la mensajería entre servidores, debe configurar un tema , que es un canal de mensajes personalizado accesible desde múltiples servidores. Después de crear un tema, puede suscribir usuarios al tema para recibir mensajes y habilitar para publicar mensajes al tema.
Suscribirse a los usuarios para recibir mensajes
Use MessagingService:SubscribeAsync() para suscribir usuarios a un tema y especificar una función de devolución de llamada que detecte mensajes que publiquen en ese tema. Por ejemplo, la siguiente muestra de código suscribe a todos los usuarios a un FriendServerEvent tema que recibe mensajes cuando cualquier usuario es teletransportado a un servidor diferente.
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Suscríbete al tema
local subscribeSuccess, subscribeConnection = pcall(function()
return MessagingService:SubscribeAsync(MESSAGING_TOPIC, function(message)
print(message.Data)
end)
end)
if subscribeSuccess then
-- Cancelar suscripción del tema al cambiar de ascendencia del jugador
player.AncestryChanged:Connect(function()
subscribeConnection:Disconnect()
end)
end
end)
Publicando Mensajes
Usa MessagingService:PublishAsync() para igualar un tema específico y publicarle un mensaje. Por ejemplo, la siguiente muestra de código usa PublishAsync() para notificar a todos los usuarios cuando un usuario se une a un nuevo servidor, incluyendo el Player.Name que representa el nombre de pantalla del usuario y el JobId, un identificador único para la instancia del servidor de experiencia en ejecución.
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Publicar en el tema
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)