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()