Lua Socket

From Spring

LuaSockets allow a widget to use tcp/udp sockets. With luasockets you can create a client or a server connecting to a server and transfering some data.

There are many possibilties what could be done with luasockets in spring, some ideas:

  • webserver that shows all files in VFS
  • telnet console, that allows control of spring
  • statistics webpage
  • ingame widget updater
  • ingame news pages
  • ...


All LuaSocket related config is readonly for LuaWidgets. They can be only changed through unitsync.

As default, socket access is restricted, as default no connections are allowed. To allow a connection / sending a packet, the destination has to the corresponding allow rule. For example, if a lua widget wants to connect to at port 80,


has to be set.

Since spring 97.0 is allowed as default.

Since Spring 98.0 all tcp connections are allowed by default (udp is still restricted).

Creating a server socket needs no config value to be set.

possible config values

LuaSocketEnabled = 1 Default is 1 means, all Socket functions are enabled, 0 disables access to sockets.
TCPAllowConnect allow TCP-connections to the listed hosts, for example: "" which allows luasockets to connect to at port 80 and at port 80.
UDPAllowConnect see TCPAllowConnect

example code

Notes / known issues / TODO

Error in Initialize(): [string "LuaUI/Widgets/luasocket.lua"]:65:
attempt to index upvalue 'socket' (a nil value)

you maybe need to add to system.lua: socket = socket,



lua sockets in spring - original thread Lua Lobby / Socket - some code pieces for connecting to spring lobby server & protocol