Biasanya, kode dalam pengalaman hanya dapat memengaruhi server atau klien yang dijalankannya, tetapi mungkin ada situasi di mana Anda ingin server yang berbeda berkomunikasi satu sama lain, termasuk:
- Pengumuman Global — Kirim pengumuman seperti "Seorang pengguna menemukan item khusus!" ke semua server pengalaman.
- Browser Server Real Time — Kompilasikan daftar semua server pengalaman dan siapa yang ada di dalamnya (diperbarui setiap menit) dan tampilkan daftar di maksimal 20 server.
Anda dapat mendukung pesan antar server di pengalaman Anda menggunakan MessagingService .Anda juga dapat menggunakan pengalaman contoh Tempat Bermain Teleportasi untuk melihat bagaimana komunikasi antar server bekerja sebelum Anda menerapkannya.Terakhir, lihat di sini untuk menjelajahi komunikasi antar server menggunakan alat eksternal.
Pengaturan pengiriman pesan antar server
Untuk mengaktifkan komunikasi antar server, Anda harus mengatur topik yang merupakan saluran pesan khusus yang dapat diakses dari banyak server.Setelah Anda membuat topik, Anda dapat berlangganan pengguna ke topik untuk menerima pesan dan mengaktifkan mempublikasikan pesan ke topik.
Berlangganan pengguna untuk menerima pesan
Gunakan MessagingService:SubscribeAsync() untuk berlangganan pengguna ke topik dan spesifikasikan fungsi panggil balas yang mendeteksi pesan yang dipublikasikan ke topik itu.Sebagai contoh, sampel kode berikut berlangganan semua pengguna ke topik FriendServerEvent yang menerima pesan ketika pengguna mana pun dipindahkan ke server yang berbeda.
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Berlangganan ke topik
local subscribeSuccess, subscribeConnection = pcall(function()
return MessagingService:SubscribeAsync(MESSAGING_TOPIC, function(message)
print(message.Data)
end)
end)
if subscribeSuccess then
-- Berhenti berlangganan dari topik saat perubahan leluhur pemain
player.AncestryChanged:Connect(function()
subscribeConnection:Disconnect()
end)
end
end)
Publikasikan pesan
Gunakan MessagingService:PublishAsync() untuk mencocokkan topik tertentu dan mempublikasikan pesan kepadanya.Sebagai contoh, sampel kode berikut menggunakan PublishAsync() untuk memberi tahu semua pengguna ketika pengguna bergabung dengan server baru, termasuk Player.Name yang mewakili nama tampilan pengguna dan JobId , identifikasi unik untuk instansi server pengalaman berjalan.
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- Publikasikan ke topik
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)