--[[ Hello Core Lua Client Simple lua client that sends every 10s a table containig a random lat, lng and a custom ID (uuid). --]] -- clientlib requires local logging = require("logging") local dispatcher = require("lac.dispatcher") local node = require("lac.clientlib.mrudp.node") local messages = require("lac.clientlib.messages") -- app specific requires local math = require("math") local uuid = require("uuid") local json = require("dkjson") -- server info local gw_ip = "127.0.0.1" local gw_port = 5500 -- logger logging.console = require("logging.console") -- dispatcher local disp = dispatcher.new() -- listener local listener = { new_message_received = function(prefix_variable, node, msg) print("Message Received!", node, msg) print("got a JSON object with ".. #msg.content .." bytes") local json_content, pos, err = json.decode (msg.content, 1, nil) for k, v in pairs(json_content) do print(k, v) end end, unsent_messages = function(prefix_variable, node, msgs) print("Unsent messages" .. #msgs) end, connected = function(prefix_variable, node) print("Connected") end, reconnected = function(prefix_variable, node) print("Reconnected") end, disconnected = function(prefix_variable, node) print("Disconnected") end, } -- content local client_data = { lat = -1 * math.random(22, 25), lng = -1 * math.random(31, 33), uuid = uuid.new() } function main() local logger = logging.console() logger:setLevel(logging.FATAL) local connection = node.new(disp, nil, client_data.uuid, nil, logger) connection:connect(gw_ip, gw_port) -- we could pass a prefix variable, e.g.: -- add_listener("external", listener, prefix_variable, prefix_variable2, ...) connection:add_listener("external", listener) while true do -- random lat and lng and encode in json client_data.lat = -1 * math.random(22, 25) client_data.lng = -1 * math.random(31, 33) local lua_content_in_json = json.encode(client_data, {indent = true}) local appMSG = messages.new() appMSG.content_type = messages.content_types.JSON appMSG:set_content_lua_obj(lua_content_in_json) connection:send_message(appMSG) disp:sleep(20) end disp:sleep(1) connection:disconnect() disp:sleep(1) end disp:start(main)