경험 내의 코드는 일반적으로 서버나 클라이언트에만 영향을 미칠 수 있지만, 다른 서버가 서로 통신하는 상황이 있을 수 있습니다. 여기에는 다음이 포함됩니다.
- 전체 공지 — 모든 경험 서버에 특별 아이템을 찾은 사용자와 같은 공지를 보내세요.
- 실시간 서버 브라우저 — 모든 경험 서버의 목록을 컴파일하고 누가 있는지(매분마다 업데이트)를 표시하고 목록을 최대 20개의 서버에 표시합니다.
Class.MessagingService 를 사용하여 경험에서 크로스 서버 메시징을 지원할 수 있습니다. Teleportation Playground 샘플 경험을 사용하여 크로스 서버 메시징이 구현되기 전에 작동을 확인할 수 있습니다. 마지막으로 여기를 참조하여 외부 도구를
크로스 서버 메시징 설정
교차 서버 메시징을 활성화하려면 다음과 같은 사용자 정의 메시징 채널을 여러 서버에서 액세스할 수 있는 토픽 주제를 설정해야 합니다. 토픽을 생성한 후 사용자를 토픽에 구독하여 메시지를 수신하고 토픽에 게시를 활성화할 수 있습니다
사용자 구독하여 메시지 수신
Class.MessagingService:SubscribeAsync() 를 사용하여 사용자를 주제에 구독하고 메시지를 게시하는 주제에 대한 콜백 함수를 지정합니다. 예를 들어, 다음 코드 샘플은 모든 사용자를 FriendServerEvent 주제에 구독하고 메시지를 게시하는 주제에 대한 콜백 함수를 지정합니
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- 주제에 구독
local subscribeSuccess, subscribeConnection = pcall(function()
return MessagingService:SubscribeAsync(MESSAGING_TOPIC, function(message)
print(message.Data)
end)
end)
if subscribeSuccess then
-- 플레이어 조상 변경에 대한 주제 구독 해제
player.AncestryChanged:Connect(function()
subscribeConnection:Disconnect()
end)
end
end)
메시 게시
Use MessagingService:PublishAsync() 를 사용하여 특정 주제에 대해 일치하는 메시지를 게시하고 메시지를 게시하십시오. 예를 들어, 다음 코드 인스턴스사용자가 새 서버
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- 주제에 게시
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)