Dynamic Event Listener System: Easy, Fast, and Optimized Event Handling for Your Projects

Hello Developers!

This module provides a Dynamic Event Listener System that makes it easy and fast to handle events in your projects. It helps you add and remove event listeners smoothly, while also optimizing performance.

Key Features:

  • Easy to add listeners to events with unique IDs.
  • Fast event handling with minimal performance impact.
  • Optimized for handling multiple listeners efficiently.
  • Remove listener(s) from an event easily.

Example Usage:

local RunService = game:GetService("RunService")
local Listener = require(ListenerModule_Path)

-- Adding a listener to the Heartbeat event
Listener:AddListener(RunService.Heartbeat, "HeartbeatHandler", function(deltaTime)
    print("Heartbeat triggered. Delta Time:", deltaTime)
end)

--Add multiple listeners to same event.
Listener:AddListener(RunService.Heartbeat, "SecondHeartbeatHandler", function(deltaTime)
    print("Second Heartbeat triggered. Delta Time:", deltaTime)
end)

-- Removing a specific listener by ID
Listener:RemoveListener(RunService.Heartbeat, "HeartbeatHandler")

-- Removing all listeners from the Heartbeat event (no ID needed)
Listener:RemoveListener(RunService.Heartbeat)

Support:
If you have any questions about integrating this module into your project, feel free to leave a comment!

To get Listener module on library: Listener

11 Likes

It looks like very easy. I will use it in my projects.

3 Likes

Looks good! I will try this one!

1 Like

That’s a life saver for me thanks a lot!

1 Like

Why not just do this?

local RunService = game:GetService("RunService")

-- Adding a listener to the Heartbeat event
local HeartbeatHandler = RunService.Heartbeat:Connect(function(deltaTime)
    print("Heartbeat triggered. Delta Time:", deltaTime)
end)

--Add multiple listeners to same event.
local SecondHeartbeatHandler = RunService.Heartbeat:Connect(function(deltaTime)
    print("Second Heartbeat triggered. Delta Time:", deltaTime)
end)

-- Removing a specific listener by ID
HeartbeatHandler:Disconnect()

-- Removing all listeners from the Heartbeat event (no ID needed)
SecondHeartbeatHandler:Disconnect() -- you can use Maid to be able to remove all connections at once
1 Like

They are separated Connections, Listener combines them in one. So all game uses one connection for each event. + Easy to cleanup specific or all for an event.

2 Likes