I'm getting: 'could not receive data from client: Connection reset by peer' on server side. At nim side I get this: Exception message: Exception type: [DbError]
The code tried to receive message from web_socket server and insert into postgresql:
await ws.send($wslogin_data)
# first response should be discard
echo await ws.receiveStrPacket()
# subscribed, start to receive consequnent msg
while ws.readyState == Open:
# get all the streaming data from server
let packet = await ws.receiveStrPacket()
# ping/pong will return blank str, causing error
# echo packet
if packet!="":
let ev_data = parseJson(packet)
# if ev_data{"params"}.getStr() != "":
if (ev_data["method"].getStr()=="notify" and ev_data["params"]["data"]{"object"}.getStr()=="TO" and ev_data["params"]["data"]["action"].getStr()=="HB") or ev_data["params"]["subscription"].getStr()=="pos":
let msgData = ev_data["params"]["data"]
let mac = msgData["mac"].getStr()
let ts = msgData["ts"].getInt()
let project_uid = msgData["project_uid"].getStr()
let sl_id = msgData{"sl_id"}.getStr()
let dev_id = msgData["dev_id"].getStr()
let px = msgData["x"].getInt()
let py = msgData["y"].getInt()
let pz = msgData["z"].getInt()
let pos_keystr = fmt"{project_uid}_{sl_id}_{dev_id}_{px}_{py}_{pz}"
echo pos_keystr
#if (sl_id!="") and (not cacheStore.contains(pos_keystr)):
# echo pos_keystr
# cacheStore.add(pos_keystr)
db.exec(sql"select data.upsert_pos(?, ?, ?, ?, ?, ?, ?, ?)", ts, mac, px, py, pz, dev_id, sl_id, project_uid)