49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
const leaderboards = require("../Data/leaderboard");
|
|
|
|
const BATCH_SIZE = 1000;
|
|
const INTERVAL_TIME = 10000;
|
|
|
|
const playerBehaviourContext = global.playerBehaviourContext;
|
|
let mongoBehaviourCollection = null;
|
|
let mongoDB = null;
|
|
|
|
const { MongoClient } = require("mongodb");
|
|
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() {
|
|
mongoDB = await connect();
|
|
mongoBehaviourCollection = mongoDB.collection("Behaviour");
|
|
})();
|
|
|
|
async function behaviourLoop() {
|
|
if (playerBehaviourContext.length === 0) return;
|
|
//require("../Miscellaneous/winston").error(playerBehaviourContext);
|
|
// console.info(playerBehaviourContext, "loop");
|
|
const playerBehaviourContextCopy = playerBehaviourContext.slice();
|
|
|
|
mongoBehaviourCollection.insertMany(playerBehaviourContextCopy, {
|
|
ordered: false,
|
|
writeConcern: { w: 0 },
|
|
bypassDocumentValidation: true
|
|
});
|
|
|
|
playerBehaviourContext.length = 0;
|
|
};
|
|
|
|
setInterval(behaviourLoop, INTERVAL_TIME);
|
|
|
|
module.exports = behaviourLoop; |