Thông thường, mã trong một trải nghiệm chỉ có thể ảnh hưởng đến máy chủ hoặc khách hàng mà nó chạy trên, nhưng có thể có tình huống mà bạn muốn các máy chủ khác nhau trò chuyện với nhau, bao gồm:
- Thông báo toàn cầu — Gửi các thông báo như "Một người dùng đã tìm thấy một món vật phẩmđặc biệt!" tới tất cả các máy chủ của trải nghiệm.
- Trình duyệt máy chủ thời gian thực — Compile một danh sách của tất cả các máy chủ trải nghiệm và ai đang ở trong chúng (cập nhật mỗi phút) và hiển thị danh sách trên tối đa 20 máy chủ.
Bạn có thể hỗ trợ truyền tin nhắn giữa các máy chủ bằng cách sử dụng MessagingService . Bạn cũng có thể sử dụng trải nghiệm Teleportation Playground để xem cách truyền tin nhắn giữa các máy chủ trước khi bạn thực hiện nó. Cuối cùng, hãy xem
Cài đặt liên máy chủ
Để bật messaging giữa các máy chủ, bạn phải cài đặt một chủ đề mà là một kênh tin nhắn tùy chỉnh có thể truy cập từ nhiều máy chủ. Sau khi bạn tạo một chủ đề, bạn có thể subscribe users đến chủ đề để nhận tin nhắn và bật phát sóng
Subscribing người dùng để nhận thông điệp
Sử dụng MessagingService:SubscribeAsync() để subscribe người dùng vào một chủ đề và spécify một hành động để xác nhận thông báo được phát đến chủ đề đó. Ví dụ, mẫu code sau đây subscribes tất cả các người dùng đến một chủ đề <
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Theo dõi chủ đề
local subscribeSuccess, subscribeConnection = pcall(function()
return MessagingService:SubscribeAsync(MESSAGING_TOPIC, function(message)
print(message.Data)
end)
end)
if subscribeSuccess then
-- Huỷ subscribe từ chủ đề khi thay đổi dòng dõi người chơi
player.AncestryChanged:Connect(function()
subscribeConnection:Disconnect()
end)
end
end)
Xuất Tin Nhắn
Sử dụng MessagingService:PublishAsync() để trùng với một chủ đề cụ thể và xuất bản một thông điệp đến nó. Ví dụ, mẫu mã code sau đây sử
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Đăng nhận xét
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)