MessagingService
The MessagingService allows game servers in the same game to communicate with each other in real time (< 1 second) using topics. Topics are developer defined strings (1-80 characters) that game servers can send and receive messages.
Delivery is best effort and not guaranteed. Make sure to architect your game so delivery failures are not critical.
Limitations
Note: these limits are subject to change.
Limit | Maximum |
---|---|
Size of message | 1kB |
Messages sent per game server | 150 + 60 * (number of players in this game server) per minute |
Messages received per topic | (10 + 20 * number of servers) per minute |
Messages received for entire game | (100 + 50 * number of servers) per minute |
Subscriptions allowed per game server | 5 + 2 * (number of players in this game server) |
Cross-Server Messaging explores how to communicate between game servers in greater detail with relevant code samples. Note that Cross-Server Messaging has separate namespaces for live games and Studio, and they can't communicate with each other.
If you want to publish ad-hoc messages to live game servers, you can use the Open Cloud APIs.
Summary
Properties
Methods
Invokes the supplied callback whenever a message is pushed to the topic.
Begins listening to the given topic.
Events
Properties
Methods
PublishAsync
This function sends the provided message to all subscribers to the topic, triggering their registered callbacks to be invoked.
Yields until the message is received by the backend.
Parameters
Determines where the message is sent.
The data to include in the message.
Returns
SubscribeAsync
This function registers a callback to begin listening to the given topic. The callback is invoked when a topic receives a message. It can be called multiple times for the same topic.
Callback
The callback is invoked with a single argument, a table with the following entries:
Field | Summary |
---|---|
Data | Developer supplied payload |
Sent | Unix time in seconds at which the message was sent |
It yields until the subscription is properly registered and returns a connection object.
To unsubscribe, call :Disconnect() on the returned object. Once Disconnect() is called, the callback should never be invoked. Killing the script containing the connections also causes the underlying connect to be unsubscribed.
See also:
- MessagingService:PublishAsync(), sends the provided message to all subscribers to the topic, triggering their registered callbacks to be invoked
Parameters
Determines where to listen for messages.
Function to be invoked whenever a message is received.
Returns
Connection that can be used to unsubscribe from the topic.
Code Samples
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local function onPlayerAdded(player)
--subscribe to the topic
local topic = "player-" .. player.UserId
local connection = MessagingService:SubscribeAsync(topic, function(message)
print("Received message for", player.Name, message.Data)
end)
player.AncestryChanged:Connect(function()
-- unsubscribe from the topic
connection:Disconnect()
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)