Initial commit
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
const packetTable = require("../Data/packets");
|
||||
const { players } = require("../Game/Game");
|
||||
|
||||
const actions = [];
|
||||
global.actions = actions;
|
||||
|
||||
const { MongoClient } = require("mongodb");
|
||||
let db = null;
|
||||
|
||||
async function connect() {
|
||||
const client = new MongoClient("mongodb://localhost:27017");
|
||||
await client.connect({
|
||||
maxPoolSize: 100,
|
||||
minPoolSize: 20,
|
||||
maxConnecting: 20,
|
||||
waitQueueTimeoutMS: 0,
|
||||
socketTimeoutMS: 30000,
|
||||
connectTimeoutMS: 10000,
|
||||
retryWrites: false,
|
||||
directConnection: true
|
||||
});
|
||||
|
||||
return client.db('test');
|
||||
};
|
||||
|
||||
(async function() {
|
||||
db = await connect();
|
||||
global.mongodb = db;
|
||||
|
||||
return;
|
||||
setInterval(async () => {
|
||||
const t = [];
|
||||
for (let i = 0; i < 32; i++) {
|
||||
t.push({
|
||||
playerID: 1,
|
||||
timestamp: new Date(),
|
||||
opcode: Math.floor(Math.random() * 120)
|
||||
});
|
||||
};
|
||||
|
||||
const bulkOps = t.map(doc => ({
|
||||
insertOne: doc
|
||||
}));
|
||||
|
||||
const n = performance.now();
|
||||
await db.collection("Actions").insertMany(t, {
|
||||
ordered: false,
|
||||
writeConcern: { w: 0 },
|
||||
bypassDocumentValidation: true
|
||||
});
|
||||
|
||||
/* await db.collection('Actions').bulkWrite(bulkOps, {
|
||||
ordered: false,
|
||||
writeConcern: { w: 0 },
|
||||
bypassDocumentValidation: true
|
||||
});*/
|
||||
}, 500);
|
||||
})();
|
||||
|
||||
module.exports = async function (ws, message, isBinary) {
|
||||
const player = players[ws.accountID];
|
||||
if (!player) return;
|
||||
|
||||
const isLimitReached = ws.limiter.update();
|
||||
if (isLimitReached) return ws.close();
|
||||
|
||||
if (player.isInactive) return; // this shouldn't happen, though
|
||||
|
||||
const view = new DataView(message);
|
||||
const packetID = view.getUint8(0);
|
||||
const packet = packetTable[packetID];
|
||||
|
||||
if (packetID !== 1 && !player.isAvailable) return;
|
||||
if (!packet) return;
|
||||
if (packet.expectedSize && packet.expectedSize !== view.byteLength) return console.info("expectedSize", view.byteLength, packet.expectedSize);
|
||||
if (!packet.isAvailable) return;
|
||||
|
||||
player.lastInteractionTimestamp = performance.now();
|
||||
|
||||
const metadata = packet.handler(ws, view, player) ?? [];
|
||||
|
||||
if (packetID > 1) {
|
||||
const action = {
|
||||
ts: new Date(),
|
||||
pid: player.id,
|
||||
// opcode: packetID,
|
||||
// metadata
|
||||
};
|
||||
|
||||
const relevantContext = global.actionContext.getElement(player.id).save(2000);
|
||||
relevantContext.push(action);
|
||||
console.info("asd", relevantContext.length)
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user