-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.lua
50 lines (37 loc) · 1.04 KB
/
server.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
local socket = require 'socket'
local JSON = require 'ext.json-lua.JSON'
local Signal = require 'ext.hump.signal'
require 'utility'
local tcpSocket = nil
local server = {}
setmetatable(server, server)
function server:start(port)
if tcpSocket ~= nil then
print('Error: tried to start tcp server when tcpSocket ~= nil')
return
end
tcpSocket = socket.try(socket.bind('localhost', port))
tcpSocket:settimeout(0)
local boundIP, boundPort = tcpSocket:getsockname()
print('Started tcp server ' .. boundIP .. ':' .. boundPort)
end
function server:update()
local client = tcpSocket:accept()
if client ~= nil then
local data, err = client:receive()
if err then
print('TCP Error: ' .. err)
return
end
client:close()
local command = JSON:decode(data)
if (command ~= nil) then
Signal.emit(command.name, command.args)
end
end
end
function server:stop()
tcpSocket:close()
print('Stopped tcp server')
end
return server