Skip to Content
Skip to Content

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"
    • reuse_address: boolean? - Whether to reuse the address.
      • default: false
    • backlog: number? - The maximum number of connections the server will backlog to the OS.
      • default: 128
    • max_body_size: number? - The maximum size of the request body.
      • default: 1048576
    • max_header_size: number? - The maximum size of the request headers for the parser.
      • default: 4092
    • max_headers: number? - The maximum number of headers to parse from the request.
      • default: 100
    • client_timeout: number? - The timeout for the client.
      • default: 60
    • 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 or buffer is returned, it will be sent as the response body with a 200 OK status.
    • 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"
    • body: (string | buffer)?
    • allow_redirects: boolean?
      • default: true
    • 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
    • max_header_size: number? - The maximum size of the response headers for the parser.
      • default: 4096
    • max_headers: number? - The maximum number of headers to parse from the response.
      • default: 100
    • 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