SignalNet Get It Here!
Version: 1.0.0
Author: dodo12w
A robust signal‑messaging system for Roblox, built on top of Sleitnick’s Signal. SignalNet lets scripts in the same execution context (server‑to‑server or client‑to‑client) communicate safely using named signals—with automatic queuing, two‑way request/response support, and fire‑before‑connect protection.
Why Use SignalNet?
Roblox developers often struggle when:
- A signal fires before any listener is ready
- They’re manually juggling lots of
BindableEventsorRemoteFunctions - Game logic depends on perfect timing (and breaks when it isn’t)
SignalNet fixes this by providing:
- Automatic queues for pre‑connect fires (never drop a call)
- Clear separation of events (fire‑and‑forget) vs functions (request/response)
- Named, reusable signals—no manual instantiation required
Features
Event signals (fire‑and‑forget)
Function signals (request/response, like RemoteFunction)
Queues calls fired before listeners connect
Instant and deferred fire support
Installation Get It Here: SignalNet - Creator Store
Place SignalNet and Sleitnick’s Signal module in ReplicatedStorage (or another shared folder):
local SignalNet = require(ReplicatedStorage.Shared.SignalNet)
Basic Usage
Event Signals
-- Connect early
SignalNet.ConnectEvent("OpenMenu", function()
print("Menu opened!")
end)
-- Fire the event
SignalNet.FireEvent("OpenMenu")
Function Signals
SignalNet.ConnectFunction("GetGold", function(player)
return player.leaderstats.Gold.Value
end)
local gold = SignalNet.FireFunction("GetGold", LocalPlayer)
print("You have", gold, "gold")
Deferred Calls
SignalNet.FireDeferredEvent("PlaySound", "VictoryTheme")
Cleanup & Debugging
-- Disconnect all listeners for a signal
SignalNet.DisconnectAll("OpenMenu")
-- Destroy the signal completely
SignalNet.Destroy("GetGold")
-- Inspect active connections
local conns = SignalNet.GetConnections("OpenMenu")
Additional APIs
One‑Shot Connections
-- Run the callback only the *next* time the function signal fires
SignalNet.ConnectOnceFunction("RequestSettings", function(player)
return getPlayerSettings(player)
end)
-- Run the callback only the *next* time the event fires
SignalNet.ConnectOnceEvent("CountdownFinished", function()
print("Round start!")
end)
Waiting for the Next Event
-- Yield until the event fires and capture its arguments
local winner = SignalNet.Wait("RoundEnded")
print("Winner:", winner)
Wrapping RBXScriptSignals
-- Convert an existing RBXScriptSignal into a SignalNet‑style signal
local partTouched = SignalNet.Wrap(workspace.Part.Touched)
partTouched:Connect(function(hit)
print(hit.Name, "touched the part")
end)
Credits
- Powered by Sleitnick’s Signal
- Inspired by GoodSignal
- Created by dodo12w
Feedback & Contributions
Drop suggestions or comments below →
Happy signaling! ![]()