3.4 KiB
Server
For Server-sided operations.
Getting the Server Object
local Server = Warp.Server()
.Connect
Connect to an event to receive incoming data from clients.
::: code-group
(
remoteName: string,
fn: (player: Player, ...any) -> ...any
) -> Connection
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.
::: code-group
(
remoteName: string,
fn: (player: Player, ...any) -> ...any
) -> Connection
Server.Once("WelcomeMessage", function(welcomeText)
print(`Welcome: {welcomeText}`)
end)
:::
.Wait
Wait for an event to be triggered.
::: code-group
(
remoteName: string
) -> (number, ...any)
local elapsed, message = Server.Wait("ServerMessage")
print(`Received message after {elapsed} seconds: {message}`)
:::
.DisconnectAll
Disconnect all connections for a specific event.
::: code-group
(
remoteName: string
)
Server.DisconnectAll("ServerNotify")
:::
.Destroy
Disconnect all connections and remove the event.
::: code-group
(
remoteName: string
)
Server.Destroy("ServerNotify")
:::
.Fire
Fire an event to a specific player.
::: code-group
(
remoteName: string,
reliable: boolean,
player: Player,
...: any
)
Server.Fire("ServerNotify", true, player, "Hello from server!")
:::
.Fires
Fire an event to all connected players.
::: code-group
(
remoteName: string,
reliable: boolean,
...: any
)
Server.Fires("Broadcast", true, "Server announcement!")
:::
.FireExcept
Fire an event to all players except specified ones.
::: code-group
(
remoteName: string,
reliable: boolean,
except: { Player },
...: any
)
local excludedPlayers = { player1, player2 }
Server.FireExcept("Update", true, excludedPlayers, "Game update")
:::
.Invoke
Invoke a client with timeout support.
::: code-group
(
remoteName: string,
player: Player,
timeout: number?,
...: any
) -> ...any
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.
::: code-group
(
remoteName: string,
schema: Buffer.SchemaType
)
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.