교차 서버 메시징

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

일반적으로 경험 내의 코드는 실행 중인 서버나 클라이언트에만 영향을 줄 수 있지만, 다른 서버가 서로 통신하도록 하려는 상황이 있을 수 있습니다. 여기에는 다음이 포함됩니다:

  • 전역 공지 — 모든 경험 서버에 "사용자가 특별 아이템을 발견했습니다!"와 같은 공지를 보내십시오.
  • 실시간 서버 브라우저 — 모든 경험의 서버 목록과 누가 그 안에 있는지(매 분마다 업데이트)를 컴파일하고 최대 20개 서버에 목록을 표시합니다.

MessagingService를 사용하여 경험에서 교차 서버 메시징을 지원할 수 있습니다.또한 텔레포트 플레이그라운드 샘플 경험을 사용하여 구현하기 전에 교차 서버 메시징이 어떻게 작동하는지 확인할 수 있습니다.마지막으로, 외부 도구를 사용하여 서버 간 통신을 탐색하려면 여기를 참조하십시오.

교차 서버 메시징 설정

교차 서버 메시징을 활성화하려면 여러 서버에서 액세스할 수 있는 사용자 지정 메시징 채널인 주제 를 설정해야 합니다.토픽을 만든 후, 사용자를 토픽에 구독하여 메시지를 받고 토픽에 메시지 게시를 활성화할 수 있습니다.

사용자 구독하여 메시지 받기

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)

메시지 게시

특정 주제와 일치하도록 MessagingService:PublishAsync()를 사용하여 메시지를 게시하십시오.예를 들어 다음 코드 샘플은 PublishAsync() 를 사용하여 사용자가 새 서버에 가입할 때 모든 사용자에게 알리고, 사용자의 표시 이름을 나타내는 Player.Name 및 실행 중인 경험 서버 인스턴스에 대한 고유 식별자인 JobId을 포함하는 모든 사용자가 새 서버에 가입할 때 알립니다.


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)