mirror of
https://github.com/MercuryWorkshop/adrift.git
synced 2025-05-13 06:10:01 -04:00
fix tracker tracking disconnected servers
This commit is contained in:
parent
751a70c188
commit
dda5302931
4 changed files with 35 additions and 13 deletions
|
@ -8,9 +8,11 @@ import serviceAccount from "./admin-creds.json";
|
|||
import admin, { ServiceAccount } from "firebase-admin";
|
||||
import { WebSocket } from "ws";
|
||||
|
||||
import { v4 as uuid } from "uuid";
|
||||
|
||||
dotenv.config();
|
||||
|
||||
let members: WebSocket[] = [];
|
||||
let members: Record<string, WebSocket> = {};
|
||||
|
||||
|
||||
const app = express() as unknown as expressWs.Application;
|
||||
|
@ -47,14 +49,15 @@ reff.on("value", snapshot => {
|
|||
let offer = val[key];
|
||||
console.log("new offer:" + offer);
|
||||
|
||||
if (members.length < 1) {
|
||||
if (Object.keys(members).length < 1) {
|
||||
db.ref(`/swarm/${key}`).set(JSON.stringify({ error: "no swarm members found" }));
|
||||
console.error("no swarm members!");
|
||||
return;
|
||||
}
|
||||
|
||||
let selectedmember = members[Math.floor(Math.random() * members.length)];
|
||||
let selectedid = Object.keys(members)[Math.floor(Math.random() * Object.keys(members).length)];
|
||||
|
||||
let selectedmember = members[selectedid];
|
||||
selectedmember.once("message", (answer) => {
|
||||
console.log("setting answer" + answer);
|
||||
db.ref(`/swarm/${key}`).set(answer);
|
||||
|
@ -69,13 +72,19 @@ reff.on("value", snapshot => {
|
|||
|
||||
app.ws("/join", (ws, _req) => {
|
||||
|
||||
console.log("ws connect");
|
||||
members.push(ws);
|
||||
let id = uuid();
|
||||
console.log(_req.ip);
|
||||
console.log(`ws connect of id ${id}`);
|
||||
|
||||
members[id] = ws;
|
||||
|
||||
ws.onclose = () => {
|
||||
members.filter(member => member != ws);
|
||||
delete members[id];
|
||||
};
|
||||
|
||||
});
|
||||
setInterval(() => {
|
||||
console.log(`${Object.keys(members).length} members`);
|
||||
}, 5000);
|
||||
|
||||
app.listen(17776, () => console.log("listening"));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue