Thông thường, mã trong trải nghiệm chỉ có thể ảnh hưởng đến máy chủ hoặc khách hàng mà nó đang chạy, nhưng có thể có những tình huống mà bạn muốn các máy chủ khác nhau giao tiếp với nhau, bao gồm:
- Thông báo toàn cầu — Gửi thông báo như "Một người dùng đã tìm thấy một vật phẩm đặc biệt!" đến tất cả các máy chủ trải nghiệm.
- Trình duyệt máy chủ thời gian thực — Tổng hợp một danh sách tất cả các máy chủ trải nghiệm và ai ở trong chúng (được 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ợ gửi tin nhắn giữa các máy chủ trong trải nghiệm của bạn bằng cách sử dụng MessagingService .Bạn cũng có thể sử dụng trải nghiệm Sân chơi dịch chuyển mẫu để xem cách gửi tin nhắn giữa các máy chủ hoạt động trước khi bạn triển khai nó.Cuối cùng, xem ở đây để khám phá giao tiếp giữa các máy chủ bằng công cụ bên ngoài.
Cài đặt gửi tin nhắn qua máy chủ
Để bật gửi tin nhắn giữa các máy chủ, bạn phải thiết lập 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 tạo một chủ đề, bạn có thể đăng ký người dùng cho chủ đề để nhận tin nhắn và bật xuất bản tin nhắn cho chủ đề.
Đăng ký người dùng để nhận tin nhắn
Sử dụng MessagingService:SubscribeAsync() để đăng ký người dùng cho một chủ đề và xác định một chức năng gọi lại xác định các tin nhắn được xuất bản vào chủ đề đó.Ví dụ, mẫu mã code sau đây đăng ký tất cả người dùng cho một chủ đề FriendServerEvent nhận tin nhắn khi bất kỳ người dùng nào được dịch chuyển đến một máy chủ khác.
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Đăng ký chủ đề
local subscribeSuccess, subscribeConnection = pcall(function()
return MessagingService:SubscribeAsync(MESSAGING_TOPIC, function(message)
print(message.Data)
end)
end)
if subscribeSuccess then
-- Huỷ đăng ký từ chủ đề khi có sự thay đổi dòng dõi người chơi
player.AncestryChanged:Connect(function()
subscribeConnection:Disconnect()
end)
end
end)
Xuất bản tin nhắn
Sử dụng MessagingService:PublishAsync() để phù hợp với một chủ đề cụ thể và xuất một tin nhắn đến nó.Ví dụ, mẫu mã code sau đây sử dụng PublishAsync() để thông báo tất cả người dùng khi một người dùng tham gia vào một máy chủ mới, bao gồm Player.Name đại diện tên hiển thị của người dùng và JobId , một nhận dạng duy nhất cho máy chủ ví dụ / trường hợpnghiệm chạy.
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Xuất bản vào chủ đề
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)