การส่งข้อความระหว่างเซิร์ฟเวอร์

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

โดยปกติแล้ว โค้ดภายในประสบการณ์สามารถส่งผลต่อเซิร์ฟเวอร์หรือไคลเอนต์ที่กำลังทำงานอยู่เท่านั้น แต่อาจมีสถานการณ์ที่คุณต้องการให้เซิร์ฟเวอร์ต่างๆ สื่อสารกัน รวมถึง:

  • การประกาศทั่วถึง — ส่งการประกาศเช่น "ไอเท็ม!" ไปยังเซิร์ฟเวอร์ทั้งหมดของประสบการณ์
  • เบราว์เซอร์เซิร์ฟเวอร์แบบเรียลไทม์ — รวบรวมรายการของเซิร์ฟเวอร์ทั้งหมดที่มีประสบการณ์และใครอยู่ในนั้น (อัปเดตทุกนาที) และแสดงรายการบนเซิร์ฟเวอร์สูงสุด 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)