Skip to content

Server 1.1

For Server-sided operations.

Getting the Server Object

lua
local Server = Warp.Server()

.reg_namespaces

Register namespaces to ensure all of the namespaces is being registered earlier on the server to prevent any unexpected issues on the client.

INFO

this is optional and conditional, you may have to use this if you had a problem with identifier namespace on client.

luau
(
	namespaces: { string },
) -> Connection
luau
Server.reg_namespaces({
	"ServerNotify",
	"ServerMessage",
	"WelcomeMessage",
	"Broadcast",
	"DataReplication",
	"RequestData",
	"Update"
})

.Connect

Connect to an event to receive incoming data from clients.

luau
(
	remoteName: string,
	fn: (player: Player, ...any) -> ...any
) -> Connection
luau
local connection = Server.Connect("ServerNotify", function(player, message)
	print(`Client message from {player}: {message}`)
end)
print(connection.Connected)

.Once

Similar to :Connect but automatically disconnects after the first firing.

luau
(
	remoteName: string,
	fn: (player: Player, ...any) -> ...any
) -> Connection
luau
Server.Once("WelcomeMessage", function(welcomeText)
	print(`Welcome: {welcomeText}`)
end)

.Wait yield

Wait for an event to be triggered.

luau
(
	remoteName: string
) -> (number, ...any)
luau
local elapsed, message = Server.Wait("ServerMessage")
print(`Received message after {elapsed} seconds: {message}`)

.DisconnectAll

Disconnect all connections for a specific event.

luau
(
	remoteName: string
)
luau
Server.DisconnectAll("ServerNotify")

.Destroy

Disconnect all connections and remove the event.

luau
(
	remoteName: string
)
luau
Server.Destroy("ServerNotify")

.Fire

Fire an event to a specific player.

luau
(
	remoteName: string,
	reliable: boolean,
	player: Player,
	...: any
)
luau
Server.Fire("ServerNotify", true, player, "Hello from server!")

.Fires

Fire an event to all connected players.

luau
(
	remoteName: string,
	reliable: boolean,
	...: any
)
luau
Server.Fires("Broadcast", true, "Server announcement!")

.FireExcept

Fire an event to all players except specified ones.

luau
(
	remoteName: string,
	reliable: boolean,
	except: { Player },
	...: any
)
luau
local excludedPlayers = { player1, player2 }
Server.FireExcept("Update", true, excludedPlayers, "Game update")

.Invoke yield

Invoke a client with timeout support.

luau
(
	remoteName: string,
	player: Player,
	timeout: number?,
	...: any
) -> ...any
luau
local response = Server.Invoke("RequestData", player, 3, "userInfo")
if response then
	print("Client responded:", response)
else
	print("Request timed out")
end

WARNING

This function is yielded. Returns nil if timeout occurs.

.useSchema

Define a schema for strict data packing on a specific event.

luau
(
	remoteName: string,
	schema: Buffer.SchemaType
)
luau
local Server = Warp.Server()

local dataSchema = Server.Schema.struct({
	Coins = Server.Schema.u32,
	Level = Server.Schema.u8,
	Inventory = Server.Schema.array(Server.Schema.u32),
	Settings = Server.Schema.struct({
		VFX = Server.Schema.boolean,
		Volume = Server.Schema.f32,
		Language = Server.Schema.string,
	})
})

Server.useSchema("DataReplication", dataSchema)

.Schema

Access to Buffer.Schema for creating data schemas.