aboutsummaryrefslogtreecommitdiffstats
path: root/lib/sockets.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sockets.js')
-rw-r--r--lib/sockets.js44
1 files changed, 34 insertions, 10 deletions
diff --git a/lib/sockets.js b/lib/sockets.js
index e297703b..89beffb3 100644
--- a/lib/sockets.js
+++ b/lib/sockets.js
@@ -27,19 +27,19 @@ broadcast = (type, data) => {
}
};
-server.on("upgrade", function (req, socket, head) {
- wss.handleUpgrade(req, socket, head, function (ws) {
+server.on("upgrade", function(req, socket, head) {
+ wss.handleUpgrade(req, socket, head, function(ws) {
wss.emit("connection", ws, req);
});
});
const names = {};
-wss.on("connection", function (ws, req) {
+wss.on("connection", function(ws, req) {
const id = uuidv4();
setTimeout(() => ws.ok || ws.close(), 2000);
- ws.on("message", async (token) => {
+ ws.on("message", async token => {
if (!token || token === "null") return;
try {
const username = jwt.decode(token).username;
@@ -47,24 +47,48 @@ wss.on("connection", function (ws, req) {
sockets[username][id] = ws;
names[id] = username;
+ let user = await getUser(username);
+ let payments = await user.getPayments({
+ where: {
+ account_id: user.account_id,
+ },
+ order: [["id", "DESC"]],
+ limit: 12,
+ include: {
+ model: db.Account,
+ as: "account"
+ }
+ });
+ let accounts = await user.getAccounts();
+ user = user.get({ plain: true });
+ user.accounts = accounts;
+ user.payments = payments;
+
ws.ok = true;
ws.send(JSON.stringify({ type: "nodes", data: networks }));
ws.send(JSON.stringify({ type: "rates", data: app.get("rates") }));
- ws.send(JSON.stringify({ type: "login", data: await getUser(username) }));
+ ws.send(JSON.stringify({ type: "login", data: user }));
l.info("socket open", username, id);
} catch (e) {
ws.close();
- l.error("problem opening socket", token, e.message, id, req.connection.remoteAddress);
+ l.error(
+ "problem opening socket",
+ token,
+ e.message,
+ id,
+ req.connection.remoteAddress
+ );
}
});
- ws.on("close", function () {
+ ws.on("close", function() {
try {
const username = names[id];
- if (sockets[username] && sockets[username][id]) delete sockets[username][id];
+ if (sockets[username] && sockets[username][id])
+ delete sockets[username][id];
l.info("socket closed", username, id);
- } catch(e) {
+ } catch (e) {
l.error("problem closing socket", e.message);
- }
+ }
});
});