You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.1 KiB
42 lines
1.1 KiB
const express = require('express');
|
|
const app = express.Router();
|
|
const expressWs = require('express-ws')(app);
|
|
|
|
const sqlite = require('better-sqlite3');
|
|
const db = new sqlite('the_big_db.db', { verbose: console.log });
|
|
|
|
const { loginRequired } = require('../authStuff.js');
|
|
|
|
const { interpret, sockets, lookUpObject } = require('../interpreter.js');
|
|
|
|
const clockListeners = new Set();
|
|
const clock = setInterval(() => {
|
|
if (clockListeners.size == 0) return;
|
|
console.log(`sending a ping to all ${clockListeners.size} connections`);
|
|
clockListeners.forEach((x) => x());
|
|
}, 5000);
|
|
console.log(`set up the clock: ${clock}`);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app.ws('/embody', (ws, req) => {
|
|
// const { playerObject } = db.prepare('select playerObject from users where id=?').get(req.session.userId)
|
|
const playerObjectId = 30; // mocked out for now!
|
|
sockets.set(playerObjectId, ws);
|
|
|
|
ws.on('message', (msg) => {
|
|
const location = lookUpObject(playerObjectId).location;
|
|
|
|
interpret(location, playerObjectId, msg);
|
|
});
|
|
|
|
ws.on('close', () => sockets.delete(playerObjectId));
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = app; |