Socket, a channel-based networking singleton

socket

socket is a simplistic socket.io inspired networking singleton that combines RemoteEvents and UnreliableRemoteEvents into channels to keep your explorer clean and your code organized.

For a client → server interaction:

-- Server
local socket = require "path/to/socket"

-- Optionally register the event beforehand.
-- Passing in an optional boolean determines its reliability.
-- This defaults to true.
--
-- (reliable = true, unreliable = false)
socket:register("message", true)

-- Events are automaticlaly registered as reliable
-- when :on() or an emit method is called.
socket:on("message", function(player, message)
    print(`{player.Name} sent a message: "{message}"`)
end)
-- Client
local socket = require "path/to/socket"

socket:emitServer("message", "Hello world!")

And for a server → client interaction:

-- Server
local socket = require "path/to/socket"

local players = game:GetService("Players"):GetPlayers()

-- socket supports firing one...
socket:emitClient("message", players[math.random(#players)], "Hello world!")

-- multiple...
socket:emitClients("message", {players[1], players[2], players[3]}, "Hello world!")

-- or all clients.
socket:emitAll("message", "Hello world!")
-- Client
local socket = require "path/to/socket"

socket:on("message", function(message)
    print(`The server sent a message: "{message}"`)
end)

Happy networking!

4 Likes