MessagingService

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

無法建立
服務
未複製

MessagingService 允許相同體驗的伺服器通過主題實時互相通信(少於 1 秒)。主題是開發者定義的字符串(1–80 個字符),伺服器用於發送和接收消息。

傳送是最佳努力,不保證成功。請確保架構設計能讓傳送失敗不會造成重大影響。

跨伺服器消息傳遞 探討了如何在伺服器之間進行更詳細的通信。

如果你想向實時遊戲伺服器發佈臨時消息,可以使用 Open Cloud APIs

限制

請注意,這些限制可能會變更。

限制最大值
消息大小 1kB
每個遊戲伺服器發送的消息 每分鐘 600 + 240 * (此遊戲伺服器中的玩家數量)
每個主題接收到的消息 每分鐘 (40 + 80 * 伺服器數量)
整個遊戲接收到的消息 每分鐘 (400 + 200 * 伺服器數量)
每個遊戲伺服器允許的訂閱數量 20 + 8 * (此遊戲伺服器中的玩家數量)
每個遊戲伺服器的訂閱請求 每分鐘 240 次請求

屬性

方法

PublishAsync

()
暫停

此函數將提供的消息發送給所有訂閱該主題的用戶,觸發他們註冊的回調。

在消息被後端接收之前會暫停(yield)。

參數

topic: string

確定消息的發送位置。

message: Variant

要包含在消息中的數據。


返回

()

SubscribeAsync

暫停

此函數註冊一個回調來開始監聽指定的主題。 回調在主題接收到消息時被調用。可以對同一主題多次調用它。

回調

回調以單一參數被調用,該參數是一個表,包含以下 項目:

字段摘要
數據 開發者提供的有效載荷
發送時間 消息發送的 Unix 時間戳(以秒為單位)

在訂閱正確註冊之前會暫停,並返回一個 連接對象。

要取消訂閱,請在返回的對象上調用 Disconnect()。 一旦調用,回調將不會再次被調用。 終止包含連接的腳本也會導致底層連接被取消訂閱。

另請參見 MessagingService:PublishAsync(),該函數 將提供的消息發送給所有訂閱該主題的用戶,觸發他們的 註冊回調。

參數

topic: string

確定在哪裡監聽消息。

callback: function

每當收到消息時要調用的函數。


返回

可用於從主題取消訂閱的連接。

範例程式碼

'這個範例展示了如何使用 MessagingService:SubscribeAsync()

來監聽遊戲宇宙中的跨伺服器聊天主題。

當玩家加入時,範例會訂閱主題

player-<player.UserId>。當使用此主題發送消息時,

連接的回調執行並打印 收到消息來自 <player.Name>

當玩家的

家譜變更 時,它也會斷開連接。

為了使這正常工作,它必須放置在伺服器 Script 中。'

訂閱跨伺服器消息

local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local function onPlayerAdded(player)
--訂閱 該主題
local topic = "player-" .. player.UserId
local connection = MessagingService:SubscribeAsync(topic, function(message)
print("收到 來自", player.Name, message.Data)
end)
player.AncestryChanged:Connect(function()
-- 退訂該主題
connection:Disconnect()
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

活動