const jwt = require("jsonwebtoken");
const io = require("socket.io");
const Sequelize = require("sequelize");
/* eslint-disable-next-line */
const pick = (O, ...K) => K.reduce((o, k) => ((o[k] = O[k]), o), {});
const sids = {};
socket = io(server, { origins: "*:*" });
emit = (username, msg, data) => {
if (data.username !== undefined) data = pick(data, ...whitelist);
if (!sids[username]) return;
sids[username].map((sid, i) => {
try {
socket.to(sid).emit(msg, data);
} catch (e) {
sids[username].splice(i, 1);
}
});
};
socket.use((socket, next) => {
try {
let token = socket.handshake.query.token;
let user = jwt.decode(token).username;
socket.request.user = user;
sids[user] ? sids[user].push(socket.id) : (sids[user] = [socket.id]);
sids[socket.id] = user;
} catch (e) {
l.error("error creating socket", e);
}
next();
});
socket.sockets.on("connect", async socket => {
socket.emit("connected");
if (app.get("rates")) socket.emit("rate", app.get("rates").ask);
socket.on("getuser", async (data, callback) => {
l.info("socket open", socket.request.user);
const user = await db.User.findOne({
include: [
{
model: db.Payment,
as: "payments",
order: [["id", "DESC"]],
received: {
[Sequelize.Op.ne]: null
},
limit: 12
}
],
where: {
username: socket.request.user
}
});
callback(user);
});
socket.on("disconnect", s => {
let user = sids[socket.id];
l.info("socket closed", user);
sids[user].splice(sids[user].indexOf(socket.id), 1);
delete sids[socket.id];
});
});
ue='prod'>prod
| coinos server — legacy coinos.io backend (Lightning, on-chain, Liquid) | coinos |
blob: 66a8f7e0b7dd1f7a6c62c8a907a82491019d3c1b (
plain) (
blame)
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
|
const { DataTypes } = require('sequelize');
const attributes = {
code: {
type: DataTypes.STRING(255),
allowNull: false,
defaultValue: null,
primaryKey: true,
autoIncrement: false,
comment: null,
field: "code"
},
text: {
type: DataTypes.TEXT,
allowNull: true,
defaultValue: null,
primaryKey: false,
autoIncrement: false,
comment: null,
field: "text"
},
};
const options = {
tableName: "codes",
comment: "",
indexes: [],
timestamps: false
};
db["Code"] = db.define("codes_model", attributes, options);
|