Safe Latent Callbacks
This script enables you to make “latent” callbacks, using the Native Trigger(Client/Server)LatentEvent to transfer huge data from server → client and opposite. I also focused on some security features like owner-verfication, no-source-spoofing or duplicate/replay protection via ticket TTL + a few more. You can use it for Data Transfer or simply for your normal callbacks.
API
Register
RegisterCallback(eventName, handler)
-
eventName
(string) -
handler(args)
→...
• args.source
is injected (trusted): player id on server, -1
on client.
UnregisterCallback(eventName)
Validated register
RegisterSecureCallback(eventName, validator, handler)
-
validator(args)
→true
orfalse, "reason"
(rejects beforehandler
) -
handler(args)
→...
Call (either side)
TriggerCallback(eventName, args?, timeoutSec?, asyncCallback?, method?)
-
args
(table) – your data (do not setsource
) -
timeoutSec
(number) – defaults to lib config (e.g., 30s) -
asyncCallback
(fn) – if given, called asasyncCallback(result..., err)
-
method
(“normal” | “latent”) – use"latent"
for big payloads
Returns (sync): result...
or nil, "error"
Server → specific client
TriggerCallbackFor(playerId, eventName, args?, timeoutSec?, asyncCallback?, method?)
- Same behavior as
TriggerCallback
, but targets oneplayerId
(server-only).
Latent shorthand
TriggerLatentCallback(eventName, args?, timeoutSec?, asyncCallback?)
- Equivalent to
TriggerCallback(..., "latent")
.
More at my GitHub…
Code is accessible | Yes |
Subscription-based | No |
Lines (approximately) | ~570 |
Requirements & dependencies | NONE |
Support | Yes |