Network
zune.net
A library to do networking in luau. Provides functions to create sockets, start an HTTP server, make HTTP requests, and handle WebSockets.
Properties
ADDRF
The table of address families.
ADDRF: <<table> = {
RDS: number,
ROSE: number,
BRIDGE: number,
PHONET: number,
SNA: number,
FILE: number,
MPLS: number,
ROUTE: number,
WANPIPE: number,
UNSPEC: number,
CAIF: number,
NETROM: number,
UNIX: number,
INET: number,
ATMSVC: number,
MAX: number,
NETLINK: number,
IUCV: number,
SMC: number,
INET6: number,
TIPC: number,
KEY: number,
QIPCRTR: number,
VSOCK: number,
IPX: number,
ASH: number,
IB: number,
PACKET: number,
KCM: number,
DECnet: number,
RXRPC: number,
NETBEUI: number,
NFC: number,
ALG: number,
IEEE802154: number,
ISDN: number,
XDP: number,
LOCAL: number,
BLUETOOTH: number,
CAN: number,
LLC: number,
APPLETALK: number,
PPPOX: number,
ATMPVC: number,
AX25: number,
ECONET: number,
IRDA: number,
SECURITY: number,
X25: number,
}table<table> = {
RDS: number,
ROSE: number,
BRIDGE: number,
PHONET: number,
SNA: number,
FILE: number,
MPLS: number,
ROUTE: number,
WANPIPE: number,
UNSPEC: number,
CAIF: number,
NETROM: number,
UNIX: number,
INET: number,
ATMSVC: number,
MAX: number,
NETLINK: number,
IUCV: number,
SMC: number,
INET6: number,
TIPC: number,
KEY: number,
QIPCRTR: number,
VSOCK: number,
IPX: number,
ASH: number,
IB: number,
PACKET: number,
KCM: number,
DECnet: number,
RXRPC: number,
NETBEUI: number,
NFC: number,
ALG: number,
IEEE802154: number,
ISDN: number,
XDP: number,
LOCAL: number,
BLUETOOTH: number,
CAN: number,
LLC: number,
APPLETALK: number,
PPPOX: number,
ATMPVC: number,
AX25: number,
ECONET: number,
IRDA: number,
SECURITY: number,
X25: number,
}>
SOCKF
Table of socket flags.
SOCKF: <<table> = {
DCCP: number,
RAW: number,
RDM: number,
DGRAM: number,
PACKET: number,
STREAM: number,
SEQPACKET: number,
CLOEXEC: number,
NONBLOCK: number,
}table<table> = {
DCCP: number,
RAW: number,
RDM: number,
DGRAM: number,
PACKET: number,
STREAM: number,
SEQPACKET: number,
CLOEXEC: number,
NONBLOCK: number,
}>
SOCKOPT
Table of socket options.
SOCKOPT: <<table> = {
ATTACH_FILTER: number,
CNX_ADVICE: number,
PEERCRED: number,
LINGER: number,
DEBUG: number,
RXQ_OVFL: number,
SNDBUF: number,
DONTROUTE: number,
ZEROCOPY: number,
PASSCRED: number,
DETACH_REUSEPORT_BPF: number,
ATTACH_REUSEPORT_EBPF: number,
MEMINFO: number,
COOKIE: number,
SNDBUFFORCE: number,
PRIORITY: number,
BSDCOMPAT: number,
SNDTIMEO: number,
BINDTODEVICE: number,
OOBINLINE: number,
BPF_EXTENSIONS: number,
TIMESTAMP_NEW: number,
NO_CHECK: number,
WIFI_STATUS: number,
PEERGROUPS: number,
TYPE: number,
NOFCS: number,
DOMAIN: number,
TIMESTAMPNS_NEW: number,
SNDLOWAT: number,
KEEPALIVE: number,
PEEK_OFF: number,
PEERSEC: number,
PEERNAME: number,
RCVBUF: number,
REUSEPORT: number?,
INCOMING_NAPI_ID: number,
TIMESTAMPING_OLD: number,
RCVBUFFORCE: number,
REUSEADDR: number,
MAX_PACING_RATE: number,
MARK: number,
RCVTIMEO_NEW: number,
BUSY_POLL: number,
TIMESTAMPING_NEW: number,
BINDTOIFINDEX: number,
TXTIME: number,
SECURITY_ENCRYPTION_NETWORK: number,
LOCK_FILTER: number,
RCVLOWAT: number,
SECURITY_ENCRYPTION_TRANSPORT: number,
ATTACH_BPF: number,
INCOMING_CPU: number,
ERROR: number,
SELECT_ERR_QUEUE: number,
DETACH_BPF: number,
SNDTIMEO_NEW: number,
TIMESTAMPNS_OLD: number,
PASSSEC: number,
TIMESTAMP_OLD: number,
GET_FILTER: number,
DETACH_FILTER: number,
ATTACH_REUSEPORT_CBPF: number,
BROADCAST: number,
SECURITY_AUTHENTICATION: number,
PROTOCOL: number,
ACCEPTCONN: number,
RCVTIMEO: number,
}table<table> = {
ATTACH_FILTER: number,
CNX_ADVICE: number,
PEERCRED: number,
LINGER: number,
DEBUG: number,
RXQ_OVFL: number,
SNDBUF: number,
DONTROUTE: number,
ZEROCOPY: number,
PASSCRED: number,
DETACH_REUSEPORT_BPF: number,
ATTACH_REUSEPORT_EBPF: number,
MEMINFO: number,
COOKIE: number,
SNDBUFFORCE: number,
PRIORITY: number,
BSDCOMPAT: number,
SNDTIMEO: number,
BINDTODEVICE: number,
OOBINLINE: number,
BPF_EXTENSIONS: number,
TIMESTAMP_NEW: number,
NO_CHECK: number,
WIFI_STATUS: number,
PEERGROUPS: number,
TYPE: number,
NOFCS: number,
DOMAIN: number,
TIMESTAMPNS_NEW: number,
SNDLOWAT: number,
KEEPALIVE: number,
PEEK_OFF: number,
PEERSEC: number,
PEERNAME: number,
RCVBUF: number,
REUSEPORT: number?,
INCOMING_NAPI_ID: number,
TIMESTAMPING_OLD: number,
RCVBUFFORCE: number,
REUSEADDR: number,
MAX_PACING_RATE: number,
MARK: number,
RCVTIMEO_NEW: number,
BUSY_POLL: number,
TIMESTAMPING_NEW: number,
BINDTOIFINDEX: number,
TXTIME: number,
SECURITY_ENCRYPTION_NETWORK: number,
LOCK_FILTER: number,
RCVLOWAT: number,
SECURITY_ENCRYPTION_TRANSPORT: number,
ATTACH_BPF: number,
INCOMING_CPU: number,
ERROR: number,
SELECT_ERR_QUEUE: number,
DETACH_BPF: number,
SNDTIMEO_NEW: number,
TIMESTAMPNS_OLD: number,
PASSSEC: number,
TIMESTAMP_OLD: number,
GET_FILTER: number,
DETACH_FILTER: number,
ATTACH_REUSEPORT_CBPF: number,
BROADCAST: number,
SECURITY_AUTHENTICATION: number,
PROTOCOL: number,
ACCEPTCONN: number,
RCVTIMEO: number,
}>
SOCKOPTLV
Table of socket option levels.
SOCKOPTLV: <<table> = {
PPPOL2TP: number,
RDS: number,
TIPC: number,
ALG: number,
PNPIPE: number,
BLUETOOTH: number,
PACKET: number,
IPV6: number,
KCM: number,
RXRPC: number,
NETBEUI: number,
DECNET: number,
TLS: number,
ICMPV6: number,
RAW: number,
XDP: number,
SOCKET: number,
LLC: number,
NFC: number,
CAIF: number,
IUCV: number,
X25: number,
AAL: number,
NETLINK: number,
DCCP: number,
IRDA: number,
ATM: number,
IP: number,
}table<table> = {
PPPOL2TP: number,
RDS: number,
TIPC: number,
ALG: number,
PNPIPE: number,
BLUETOOTH: number,
PACKET: number,
IPV6: number,
KCM: number,
RXRPC: number,
NETBEUI: number,
DECNET: number,
TLS: number,
ICMPV6: number,
RAW: number,
XDP: number,
SOCKET: number,
LLC: number,
NFC: number,
CAIF: number,
IUCV: number,
X25: number,
AAL: number,
NETLINK: number,
DCCP: number,
IRDA: number,
ATM: number,
IP: number,
}>
IPPROTO
Table of IP protocols.
IPPROTO: <<table> = {
COMP: number,
ICMP: number,
ESP: number,
IGMP: number,
TCP: number,
ICMPV6: number,
MTP: number,
GRE: number,
SCTP: number,
MAX: number,
NONE: number,
FRAGMENT: number,
IDP: number,
UDPLITE: number,
HOPOPTS: number,
MH: number,
BEETPH: number,
AH: number,
IPIP: number,
IPV6: number,
PIM: number,
DSTOPTS: number,
UDP: number,
DCCP: number,
RAW: number,
PUP: number,
MPLS: number,
ENCAP: number,
RSVP: number,
ROUTING: number,
EGP: number,
TP: number,
IP: number,
}table<table> = {
COMP: number,
ICMP: number,
ESP: number,
IGMP: number,
TCP: number,
ICMPV6: number,
MTP: number,
GRE: number,
SCTP: number,
MAX: number,
NONE: number,
FRAGMENT: number,
IDP: number,
UDPLITE: number,
HOPOPTS: number,
MH: number,
BEETPH: number,
AH: number,
IPIP: number,
IPV6: number,
PIM: number,
DSTOPTS: number,
UDP: number,
DCCP: number,
RAW: number,
PUP: number,
MPLS: number,
ENCAP: number,
RSVP: number,
ROUTING: number,
EGP: number,
TP: number,
IP: number,
}>
Functions
createSocket
Creates a new socket from OS.
createSocket(address_family: number, flags: number, protocol: number): NetworkSocket
Parameters
address_family: number
- The address family to use.flags: number
- The socket type to use.protocol: number
- The protocol to use.
Throws
- IO Error
- Network Error
getAddressList
Gets a list of addresses for the provided name and port.
getAddressList(name: string, port: number): {export type NetworkAddress = {
family: number,
port: number,
address: string,
}NetworkAddressexport type NetworkAddress = {
family: number,
port: number,
address: string,
}}
Parameters
name: string
- The name to resolve.port: number
- The port to resolve.
Throws
- IO Error
Namespaces
http
FUNCTIONS
serve
Starts a new HTTP server.
http.serve(opts: -- references:
-- (1) HttpWebSocket
-- (2) TlsCertKeyPair
export type HttpServerResponse = {
status_code: number,
headers: {
[string]: string
}?,
body: (string | buffer)?,
}
export type HttpServerRequest = {
method: string,
path: string,
raw_path: string,
query: {
[string | number]: string
},
headers: {
[string]: string
},
body: string?,
}
export type ServerWebSocketHandlers = {
upgrade: ((request: HttpServerRequest) -> boolean)?,
open: ((websocket: HttpWebSocket) -> ())?,
message: ((websocket: HttpWebSocket, message: string) -> ())?,
close: ((websocket: HttpWebSocket, code: number) -> ())?,
}
export type HttpServeOptions = {
port: number,
address: string?,
reuse_address: boolean?,
backlog: number?,
max_body_size: number?,
max_header_size: number?,
max_headers: number?,
client_timeout: number?,
max_connections: number?,
request: (request: HttpServerRequest) -> string | buffer | HttpServerResponse,
websocket: ServerWebSocketHandlers?,
tls: {
auth: TlsCertKeyPair?,
}?,
}HttpServeOptions-- references:
-- (1) HttpWebSocket
-- (2) TlsCertKeyPair
export type HttpServerResponse = {
status_code: number,
headers: {
[string]: string
}?,
body: (string | buffer)?,
}
export type HttpServerRequest = {
method: string,
path: string,
raw_path: string,
query: {
[string | number]: string
},
headers: {
[string]: string
},
body: string?,
}
export type ServerWebSocketHandlers = {
upgrade: ((request: HttpServerRequest) -> boolean)?,
open: ((websocket: HttpWebSocket) -> ())?,
message: ((websocket: HttpWebSocket, message: string) -> ())?,
close: ((websocket: HttpWebSocket, code: number) -> ())?,
}
export type HttpServeOptions = {
port: number,
address: string?,
reuse_address: boolean?,
backlog: number?,
max_body_size: number?,
max_header_size: number?,
max_headers: number?,
client_timeout: number?,
max_connections: number?,
request: (request: HttpServerRequest) -> string | buffer | HttpServerResponse,
websocket: ServerWebSocketHandlers?,
tls: {
auth: TlsCertKeyPair?,
}?,
}): HttpServer
Parameters
opts: HttpServeOptions
- The options for the server.port: number
- The port to listen on.address: string?
- The address to bind to.- default:
"127.0.0.1"
- default:
reuse_address: boolean?
- Whether to reuse the address.- default:
false
- default:
backlog: number?
- The maximum number of connections the server will backlog to the OS.- default:
128
- default:
max_body_size: number?
- The maximum size of the request body.- default:
1048576
- default:
max_header_size: number?
- The maximum size of the request headers for the parser.- default:
4092
- default:
max_headers: number?
- The maximum number of headers to parse from the request.- default:
100
- default:
client_timeout: number?
- The timeout for the client.- default:
60
- default:
max_connections: number?
- The maximum number of connections.0
for no limit- default:
1024
request: (request: HttpServerRequest) -> string | buffer | HttpServerResponse
- The function to call when a request is received.- If a
HttpServerResponse
is returned, it will be sent as the response. - If a
string
orbuffer
is returned, it will be sent as the response body with a200 OK
status.
- If a
websocket: ServerWebSocketHandlers?
- The handlers for WebSocket connections.tls: {auth: TlsCertKeyPair?, }?
- Tls options for the server.
Throws
- IO Error
- Network Error
request
Makes a request to the specified host.
Options are optional, defaults to GET request.
http.request(host: string): export type HttpResponse<T> = {
ok: boolean,
status_code: number,
status_reason: string,
headers: {
[string]: string
},
body: T,
}HttpResponseexport type HttpResponse<T> = {
ok: boolean,
status_code: number,
status_reason: string,
headers: {
[string]: string
},
body: T,
}<string>
http.request(host: string, opts: -- references:
-- (1) TlsCertBundle
export type HttpRequestOptions = {
headers: {
[string]: string
}?,
method: ("GET" | "HEAD" | "POST" | "PUT" | "DELETE" | "CONNECT" | "OPTIONS" | "TRACE" | "PATCH")?,
body: (string | buffer)?,
allow_redirects: boolean?,
timeout: number?,
max_body_size: number?,
max_header_size: number?,
max_headers: number?,
tls: {
host: string?,
ca: TlsCertBundle?,
}?,
}HttpRequestOptions-- references:
-- (1) TlsCertBundle
export type HttpRequestOptions = {
headers: {
[string]: string
}?,
method: ("GET" | "HEAD" | "POST" | "PUT" | "DELETE" | "CONNECT" | "OPTIONS" | "TRACE" | "PATCH")?,
body: (string | buffer)?,
allow_redirects: boolean?,
timeout: number?,
max_body_size: number?,
max_header_size: number?,
max_headers: number?,
tls: {
host: string?,
ca: TlsCertBundle?,
}?,
}?, bytes: false?): export type HttpResponse<T> = {
ok: boolean,
status_code: number,
status_reason: string,
headers: {
[string]: string
},
body: T,
}HttpResponseexport type HttpResponse<T> = {
ok: boolean,
status_code: number,
status_reason: string,
headers: {
[string]: string
},
body: T,
}<string>
http.request(host: string, opts: -- references:
-- (1) TlsCertBundle
export type HttpRequestOptions = {
headers: {
[string]: string
}?,
method: ("GET" | "HEAD" | "POST" | "PUT" | "DELETE" | "CONNECT" | "OPTIONS" | "TRACE" | "PATCH")?,
body: (string | buffer)?,
allow_redirects: boolean?,
timeout: number?,
max_body_size: number?,
max_header_size: number?,
max_headers: number?,
tls: {
host: string?,
ca: TlsCertBundle?,
}?,
}HttpRequestOptions-- references:
-- (1) TlsCertBundle
export type HttpRequestOptions = {
headers: {
[string]: string
}?,
method: ("GET" | "HEAD" | "POST" | "PUT" | "DELETE" | "CONNECT" | "OPTIONS" | "TRACE" | "PATCH")?,
body: (string | buffer)?,
allow_redirects: boolean?,
timeout: number?,
max_body_size: number?,
max_header_size: number?,
max_headers: number?,
tls: {
host: string?,
ca: TlsCertBundle?,
}?,
}?, bytes: true): export type HttpResponse<T> = {
ok: boolean,
status_code: number,
status_reason: string,
headers: {
[string]: string
},
body: T,
}HttpResponseexport type HttpResponse<T> = {
ok: boolean,
status_code: number,
status_reason: string,
headers: {
[string]: string
},
body: T,
}<buffer>
http.request(host: string, opts: -- references:
-- (1) TlsCertBundle
export type HttpRequestOptions = {
headers: {
[string]: string
}?,
method: ("GET" | "HEAD" | "POST" | "PUT" | "DELETE" | "CONNECT" | "OPTIONS" | "TRACE" | "PATCH")?,
body: (string | buffer)?,
allow_redirects: boolean?,
timeout: number?,
max_body_size: number?,
max_header_size: number?,
max_headers: number?,
tls: {
host: string?,
ca: TlsCertBundle?,
}?,
}HttpRequestOptions-- references:
-- (1) TlsCertBundle
export type HttpRequestOptions = {
headers: {
[string]: string
}?,
method: ("GET" | "HEAD" | "POST" | "PUT" | "DELETE" | "CONNECT" | "OPTIONS" | "TRACE" | "PATCH")?,
body: (string | buffer)?,
allow_redirects: boolean?,
timeout: number?,
max_body_size: number?,
max_header_size: number?,
max_headers: number?,
tls: {
host: string?,
ca: TlsCertBundle?,
}?,
}?, bytes: boolean?): export type HttpResponse<T> = {
ok: boolean,
status_code: number,
status_reason: string,
headers: {
[string]: string
},
body: T,
}HttpResponseexport type HttpResponse<T> = {
ok: boolean,
status_code: number,
status_reason: string,
headers: {
[string]: string
},
body: T,
}<string | buffer>
Parameters
host: string
- The host to make the request to.opts: HttpRequestOptions?
- The options for the request.headers: {[string]: string}?
method: ("GET" | "HEAD" | "POST" | "PUT" | "DELETE" | "CONNECT" | "OPTIONS" | "TRACE" | "PATCH")?
- default:
"GET"
- default:
body: (string | buffer)?
allow_redirects: boolean?
- default:
true
- default:
timeout: number?
- The timeout for the request in seconds.- If the timeout is zero, the request will never timeout.
- default:
30
max_body_size: number?
- The maximum size of the response body.- default:
1_048_576
- default:
max_header_size: number?
- The maximum size of the response headers for the parser.- default:
4096
- default:
max_headers: number?
- The maximum number of headers to parse from the response.- default:
100
- default:
tls: {host: string?, ca: TlsCertBundle?, }?
- Tls options for the request.
bytes: false? | true | boolean?
- Whether to return the response body as a buffer or string.
Throws
- Request Error
- Network Error
websocket
http.websocket(host: string, opts: -- references:
-- (1) HttpWebSocket
-- (2) TlsCertBundle
export type HttpServerResponse = {
status_code: number,
headers: {
[string]: string
}?,
body: (string | buffer)?,
}
export type HttpWebSocketOptions = {
headers: {
[string]: string
}?,
protocols: {string}?,
timeout: number?,
accept: ((socket: HttpWebSocket, request: HttpServerResponse) -> boolean)?,
open: ((socket: HttpWebSocket) -> ())?,
close: ((socket: HttpWebSocket, close: number?) -> ())?,
message: ((socket: HttpWebSocket, message: string) -> ())?,
tls: {
host: string?,
ca: TlsCertBundle?,
}?,
}HttpWebSocketOptions-- references:
-- (1) HttpWebSocket
-- (2) TlsCertBundle
export type HttpServerResponse = {
status_code: number,
headers: {
[string]: string
}?,
body: (string | buffer)?,
}
export type HttpWebSocketOptions = {
headers: {
[string]: string
}?,
protocols: {string}?,
timeout: number?,
accept: ((socket: HttpWebSocket, request: HttpServerResponse) -> boolean)?,
open: ((socket: HttpWebSocket) -> ())?,
close: ((socket: HttpWebSocket, close: number?) -> ())?,
message: ((socket: HttpWebSocket, message: string) -> ())?,
tls: {
host: string?,
ca: TlsCertBundle?,
}?,
}): HttpWebSocket
Parameters
host: string
- The host to connect to.opts: HttpWebSocketOptions
- The options for the WebSocket.headers: {[string]: string}?
protocols: {string}?
- The protocols to send to the server.timeout: number?
- The timeout for the WebSocket connection.- If the timeout is negative, the WebSocket will never timeout.
- default:
30
accept: ((socket: HttpWebSocket, request: HttpServerResponse) -> boolean)?
- The function to call to accept the WebSocket connection.open: ((socket: HttpWebSocket) -> ())?
- The function to call when the WebSocket connection is opened.close: ((socket: HttpWebSocket, close: number?) -> ())?
- The function to call when the WebSocket connection is closed.message: ((socket: HttpWebSocket, message: string) -> ())?
- The function to call when a message is received.tls: {host: string?, ca: TlsCertBundle?, }?
- Tls options for the WebSocket connection.
Throws
- WebSocket Error
- Network Error
Last updated on