MongooseCache resubscription

This commit is contained in:
notsapinho 2021-04-08 11:40:57 -03:00
parent f3f11adb38
commit 953d7bd3d2
2 changed files with 175 additions and 159 deletions

View File

@ -20,6 +20,7 @@
"lambert-db": "^1.1.8", "lambert-db": "^1.1.8",
"lambert-server": "^1.1.7", "lambert-server": "^1.1.7",
"missing-native-js-functions": "^1.2.3", "missing-native-js-functions": "^1.2.3",
"mongoose-autopopulate": "^0.12.3",
"node-fetch": "^2.6.1", "node-fetch": "^2.6.1",
"typescript": "^4.2.3", "typescript": "^4.2.3",
"uuid": "^8.3.2", "uuid": "^8.3.2",
@ -27,6 +28,7 @@
}, },
"devDependencies": { "devDependencies": {
"@types/jsonwebtoken": "^8.5.0", "@types/jsonwebtoken": "^8.5.0",
"@types/mongoose-autopopulate": "^0.10.1",
"@types/uuid": "^8.3.0", "@types/uuid": "^8.3.0",
"@types/ws": "^7.4.0" "@types/ws": "^7.4.0"
} }

View File

@ -26,14 +26,28 @@ export async function setupListener(this: WebSocket) {
[ [
{ {
$match: { $match: {
$or: [{ "fullDocument.guild_id": { $in: guilds } }, { "fullDocument.user_id": this.user_id }], $or: [{ "fullDocument.guild_id": { $in: guilds } }, { "fullDocument.user_id": user.id }]
}, }
}, }
], ],
{ onlyEvents: true } {
onlyEvents: true
}
); );
await eventStream.init(); await eventStream.init();
eventStream.on("insert", dispatch.bind(this)); eventStream.on("insert", async (document) => {
dispatch.call(this, document);
const newUser = await UserModel.findOne({ id: user.id }).lean().exec();
var newGuilds = user.guilds;
if (shard_count) {
newGuilds = user.guilds.filter((x) => (BigInt(x) >> 22n) % shard_count === shard_id);
}
eventStream.changeStream([{ $match: { $or: [{ "fullDocument.guild_id": { $in: newGuilds } }, { "fullDocument.user_id": newUser.id }] } }]);
});
this.once("close", () => eventStream.destroy()); this.once("close", () => eventStream.destroy());
} }
@ -180,6 +194,6 @@ export async function dispatch(this: WebSocket, document: Event) {
op: OPCODES.Dispatch, op: OPCODES.Dispatch,
t: document.event, t: document.event,
d: document.data, d: document.data,
s: this.sequence++, s: this.sequence++
}); });
} }