WebServer = { _port = 50655, } function WebServer:run() socket = require("socket") self._server = socket.bind("localhost", self._port) self._server:settimeout(2) self._clients = {} self._sendClients = {} local ip,port = self._server:getsockname() print(ip..' running on port ' .. port) self:mainLoop() end function WebServer:lookForNewClients() local client = self._server:accept() if client then client:settimeout(2) table.insert(self._clients, client) print(client:receive()) print('Got client') end end function WebServer:mainLoop() local clients = self._clients while true do self:lookForNewClients() local receivingClients, _, error = socket.select(clients, nil, 3) if error and error ~= "timeout" then print("error = "..tostring(error)) end for i,client in pairs(receivingClients) do if type(client) ~= "number" then print("receiving data") local data, error = client:receive('*a') if error then print("error: "..tostring(error).." on client "..tostring(client)) client:send("error") table.remove(clients, i) else print("data received " .. data) --error, bytesSent = client:send(data) --print("data resent " .. data) --client:close() --table.remove(clients, i) end end end end end WebServer:run()