Skip to main content

NettyServer

NettyServer is the server module for the Netty framework. It is used to handle all forms of inbound and outbound traffic. NettyServer serializes any data it can into buffers. Due to the nature of how Netty sends remote data, this approach to networking results in a significant decrease in outbound and inbound traffic, as well as lowering ping.

Functions

Start

NettyServer.Start() → ()

This function starts the network inbound and outbound handler. Once NettyServer is started, you can no longer register new events.

SpawnEvent

NettyServer.SpawnEvent(
playerPlayer,--

The player triggering the event.

eventTypeany,--

The event id to trigger.

...any--

The arguments to pass to the event.

) → ()

This function spawns an event in the current thread.

note

This function is mainly used internally, so it doesn't offer much configuration / outside influence.

RegisterEvent

NettyServer.RegisterEvent(
idany,--

The event id to bind to.

callback(
...any
) → nil?--

The callback function to run when this event is triggered. If no callback is given, then a blank function will be used if the event is ever called.

) → ()

This function registers an event on the server. All events need to be registered on the server, even if it is only used server -> client. Events can only have one callback.

local NettyServer = require(game:GetService("ReplicatedStorage"):WaitForChild("Commons")).Netty.Server
NettyServer.RegisterEvent("my event", function(player, some_number)
	print(player.Name .. " has send " .. some_number .. " to the server")
end)

NettyServer.Start()
info

There can only be a maximum of 255 events registered. This limit was determined by the amount of bytes allocated to the outbound / inbound header for packet size. Additionally, you need to register events before you call NettyServer.Start()

FireClient

NettyServer.FireClient(
playerPlayer,--

The player you are sending the event to.

eventIdany,--

The event id.

...any--

The arguments being sent to the player.

) → ()

This function sends an event to the specified client.

local NettyServer = require(game:GetService("ReplicatedStorage"):WaitForChild("Commons")).Netty.Server
NettyServer.RegisterEvent("my event")

NettyServer.Start()
NettyServer.FireClient(game:GetService("Players"):WaitForChild("Player1"), "my event", 123, "abc", ...)
tip

Netty supports any arguments. Due to Netty's encoding design, any arguments that cannot be serialized are still passed in a table, allowing Netty to support all data types.

FireAllClients

NettyServer.FireAllClients(
eventIdany,--

The event id.

...any--

The arguments being sent to all players.

) → ()

This function sends an event to all clients.

local NettyServer = require(game:GetService("ReplicatedStorage"):WaitForChild("Commons")).Netty.Server
NettyServer.RegisterEvent("my event")

NettyServer.Start()
NettyServer.FireAllClients("my event", 123, "abc", ...)

FireList

NettyServer.FireList(
players{Player},--

The list of players to send the event to.

eventIdany,--

The event id.

...any--

The arguments being sent to all players.

) → ()

This function sends an event to all clients.

local Players = game:GetService("Players")
local NettyServer = require(game:GetService("ReplicatedStorage"):WaitForChild("Commons")).Netty.Server
NettyServer.RegisterEvent("my event")

NettyServer.Start()
NettyServer.FireList({Players:WaitForChild("Player1"), Players:WaitForChild("Player2"), ...}, "my event", 123, "abc", ...)

FireClientUnreliable

NettyServer.FireClientUnreliable(
playerPlayer,--

The player you are sending the event to.

eventIdany,--

The event id.

...any--

The arguments being sent to the player.

) → ()

This function sends an event to the specified client over the unreliable channel.

local NettyServer = require(game:GetService("ReplicatedStorage"):WaitForChild("Commons")).Netty.Server
NettyServer.RegisterEvent("my event")

NettyServer.Start()
NettyServer.FireClientUnreliable(game:GetService("Players"):WaitForChild("Player1"), "my event", 123, "abc", ...)

FireAllClientsUnreliable

NettyServer.FireAllClientsUnreliable(
eventIdany,--

The event id.

...any--

The arguments being sent to all players.

) → ()

This function sends an event to all clients over the unreliable channel.

local NettyServer = require(game:GetService("ReplicatedStorage"):WaitForChild("Commons")).Netty.Server
NettyServer.RegisterEvent("my event")

NettyServer.Start()
NettyServer.FireAllClientsUnreliable("my event", 123, "abc", ...)

FireListUnreliable

NettyServer.FireListUnreliable(
players{Player},--

The list of players to send the event to.

eventIdany,--

The event id.

...any--

The arguments being sent to all players.

) → ()

This function sends an event to all clients over the unreliable channel.

local Players = game:GetService("Players")
local NettyServer = require(game:GetService("ReplicatedStorage"):WaitForChild("Commons")).Netty.Server
NettyServer.RegisterEvent("my event")

NettyServer.Start()
NettyServer.FireListUnreliable({Players:WaitForChild("Player1"), Players:WaitForChild("Player2"), ...}, "my event", 123, "abc", ...)
Show raw api
{
    "functions": [
        {
            "name": "_init",
            "desc": "This function handles NettyServer initialization.  Since both the Server and Client modules exist under ReplicatedStorage, we use this function to prevent the server from constructing a client as well.",
            "params": [],
            "returns": [],
            "function_type": "static",
            "private": true,
            "source": {
                "line": 92,
                "path": "src/Commons/Netty/NettyServer.luau"
            }
        },
        {
            "name": "Start",
            "desc": "This function starts the network inbound and outbound handler.  Once NettyServer is started, you can no longer register new events.",
            "params": [],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 201,
                "path": "src/Commons/Netty/NettyServer.luau"
            }
        },
        {
            "name": "SpawnEvent",
            "desc": "This function spawns an event in the current thread.\n\n:::note\nThis function is mainly used internally, so it doesn't offer much configuration / outside influence.",
            "params": [
                {
                    "name": "player",
                    "desc": "The player triggering the event.",
                    "lua_type": "Player"
                },
                {
                    "name": "eventType",
                    "desc": "The event id to trigger.",
                    "lua_type": "any"
                },
                {
                    "name": "...",
                    "desc": "The arguments to pass to the event.",
                    "lua_type": "any"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 257,
                "path": "src/Commons/Netty/NettyServer.luau"
            }
        },
        {
            "name": "RegisterEvent",
            "desc": "This function registers an event on the server.  All events need to be registered on the server, even if it is only used `server -> client`.  Events can only have **one** callback.\n\n```lua\nlocal NettyServer = require(game:GetService(\"ReplicatedStorage\"):WaitForChild(\"Commons\")).Netty.Server\nNettyServer.RegisterEvent(\"my event\", function(player, some_number)\n\tprint(player.Name .. \" has send \" .. some_number .. \" to the server\")\nend)\n\nNettyServer.Start()\n```\n\n:::info\nThere can only be a maximum of 255 events registered.  This limit was determined by the amount of bytes allocated to the outbound / inbound header for packet size.\nAdditionally, you need to register events before you call `NettyServer.Start()`",
            "params": [
                {
                    "name": "id",
                    "desc": "The event id to bind to.",
                    "lua_type": "any"
                },
                {
                    "name": "callback",
                    "desc": "The callback function to run when this event is triggered.  If no callback is given, then a blank function will be used if the event is ever called.",
                    "lua_type": "(Player,...any) -> nil?"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 287,
                "path": "src/Commons/Netty/NettyServer.luau"
            }
        },
        {
            "name": "FireClient",
            "desc": "This function sends an event to the specified client.\n```lua\nlocal NettyServer = require(game:GetService(\"ReplicatedStorage\"):WaitForChild(\"Commons\")).Netty.Server\nNettyServer.RegisterEvent(\"my event\")\n\nNettyServer.Start()\nNettyServer.FireClient(game:GetService(\"Players\"):WaitForChild(\"Player1\"), \"my event\", 123, \"abc\", ...)\n```\n\n:::tip\nNetty supports any arguments.  Due to Netty's encoding design, any arguments that cannot be serialized are still passed in a table, allowing Netty to support all data types.",
            "params": [
                {
                    "name": "player",
                    "desc": "The player you are sending the event to.",
                    "lua_type": "Player"
                },
                {
                    "name": "eventId",
                    "desc": "The event id.",
                    "lua_type": "any"
                },
                {
                    "name": "...",
                    "desc": "The arguments being sent to the player.",
                    "lua_type": "any"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 318,
                "path": "src/Commons/Netty/NettyServer.luau"
            }
        },
        {
            "name": "FireAllClients",
            "desc": "This function sends an event to all clients.\n\n```lua\nlocal NettyServer = require(game:GetService(\"ReplicatedStorage\"):WaitForChild(\"Commons\")).Netty.Server\nNettyServer.RegisterEvent(\"my event\")\n\nNettyServer.Start()\nNettyServer.FireAllClients(\"my event\", 123, \"abc\", ...)\n```",
            "params": [
                {
                    "name": "eventId",
                    "desc": "The event id.",
                    "lua_type": "any"
                },
                {
                    "name": "...",
                    "desc": "The arguments being sent to all players.",
                    "lua_type": "any"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 356,
                "path": "src/Commons/Netty/NettyServer.luau"
            }
        },
        {
            "name": "FireList",
            "desc": "This function sends an event to all clients.\n\n```lua\nlocal Players = game:GetService(\"Players\")\nlocal NettyServer = require(game:GetService(\"ReplicatedStorage\"):WaitForChild(\"Commons\")).Netty.Server\nNettyServer.RegisterEvent(\"my event\")\n\nNettyServer.Start()\nNettyServer.FireList({Players:WaitForChild(\"Player1\"), Players:WaitForChild(\"Player2\"), ...}, \"my event\", 123, \"abc\", ...)\n```",
            "params": [
                {
                    "name": "players",
                    "desc": "The list of players to send the event to.",
                    "lua_type": "{Player}"
                },
                {
                    "name": "eventId",
                    "desc": "The event id.",
                    "lua_type": "any"
                },
                {
                    "name": "...",
                    "desc": "The arguments being sent to all players.",
                    "lua_type": "any"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 403,
                "path": "src/Commons/Netty/NettyServer.luau"
            }
        },
        {
            "name": "FireClientUnreliable",
            "desc": "This function sends an event to the specified client **over the unreliable channel**.\n```lua\nlocal NettyServer = require(game:GetService(\"ReplicatedStorage\"):WaitForChild(\"Commons\")).Netty.Server\nNettyServer.RegisterEvent(\"my event\")\n\nNettyServer.Start()\nNettyServer.FireClientUnreliable(game:GetService(\"Players\"):WaitForChild(\"Player1\"), \"my event\", 123, \"abc\", ...)\n```",
            "params": [
                {
                    "name": "player",
                    "desc": "The player you are sending the event to.",
                    "lua_type": "Player"
                },
                {
                    "name": "eventId",
                    "desc": "The event id.",
                    "lua_type": "any"
                },
                {
                    "name": "...",
                    "desc": "The arguments being sent to the player.",
                    "lua_type": "any"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 448,
                "path": "src/Commons/Netty/NettyServer.luau"
            }
        },
        {
            "name": "FireAllClientsUnreliable",
            "desc": "This function sends an event to all clients **over the unreliable channel**.\n\n```lua\nlocal NettyServer = require(game:GetService(\"ReplicatedStorage\"):WaitForChild(\"Commons\")).Netty.Server\nNettyServer.RegisterEvent(\"my event\")\n\nNettyServer.Start()\nNettyServer.FireAllClientsUnreliable(\"my event\", 123, \"abc\", ...)\n```",
            "params": [
                {
                    "name": "eventId",
                    "desc": "The event id.",
                    "lua_type": "any"
                },
                {
                    "name": "...",
                    "desc": "The arguments being sent to all players.",
                    "lua_type": "any"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 486,
                "path": "src/Commons/Netty/NettyServer.luau"
            }
        },
        {
            "name": "FireListUnreliable",
            "desc": "This function sends an event to all clients **over the unreliable channel**.\n\n```lua\nlocal Players = game:GetService(\"Players\")\nlocal NettyServer = require(game:GetService(\"ReplicatedStorage\"):WaitForChild(\"Commons\")).Netty.Server\nNettyServer.RegisterEvent(\"my event\")\n\nNettyServer.Start()\nNettyServer.FireListUnreliable({Players:WaitForChild(\"Player1\"), Players:WaitForChild(\"Player2\"), ...}, \"my event\", 123, \"abc\", ...)\n```",
            "params": [
                {
                    "name": "players",
                    "desc": "The list of players to send the event to.",
                    "lua_type": "{Player}"
                },
                {
                    "name": "eventId",
                    "desc": "The event id.",
                    "lua_type": "any"
                },
                {
                    "name": "...",
                    "desc": "The arguments being sent to all players.",
                    "lua_type": "any"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 533,
                "path": "src/Commons/Netty/NettyServer.luau"
            }
        }
    ],
    "properties": [],
    "types": [],
    "name": "NettyServer",
    "desc": "NettyServer is the server module for the Netty framework.    It is used to handle all forms of inbound and outbound traffic.\nNettyServer serializes any data it can into buffers.  Due to the nature of how Netty sends remote data, this approach to networking results in a significant decrease in outbound and inbound traffic, as well as lowering ping.",
    "source": {
        "line": 38,
        "path": "src/Commons/Netty/NettyServer.luau"
    }
}