import { renderCost } from './render/costs';
import {renderMailroom, renderMessage} from './render/mail';
import {topbar} from './render/topbar';
+import {renderPublicChatMessage} from './render/chat-message';
-const server = new HttpServer(config.API_PORT);
+const server = new HttpServer(config.API_PORT);
const accountRepo = new AccountRepository();
const cityRepo = new CityRepository();
const mailRepo = new MailRepository();
+const msgBuffer: string[] = [];
+
createBullBoard({
queues: [
new BullAdapter(tick.queue),
return listOperations(attacks);
});
+server.post<{body: {message: string}}, void>('/chat', async req => {
+ const acct = await accountRepo.validate(req.authInfo.accountId, req.authInfo.token);
+ const now = Date.now();
+
+ console.log(acct.username, req.body.message, now);
+
+ const msg = renderPublicChatMessage(acct.username, req.body.message);
+ server.ws.emit('/chat-message', msg);
+ msgBuffer.unshift(msg);
+ while(msgBuffer.length > 30) {
+ msgBuffer.pop();
+ }
+});
+
+server.ws.on('connection', async socket => {
+ const auth = server.authFromUrl(socket.request.headers['referer']);
+ const acct = await accountRepo.validate(auth.authInfo.accountId, auth.authInfo.token);
+
+ server.ws.emit('/chat-message', msgBuffer.join("\n"));
+
+ server.ws.emit('/chat-message', renderPublicChatMessage('Server', `${acct.username} logged in`));
+
+});
server.start();