fix possible lost messages (OOS)

This commit is contained in:
Zutatensuppe 2021-05-29 18:57:22 +02:00
parent c6f47c9b25
commit 472113ad74
6 changed files with 21 additions and 10 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -4,7 +4,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>🧩 jigsaw.hyottoko.club</title> <title>🧩 jigsaw.hyottoko.club</title>
<script type="module" crossorigin src="/assets/index.ae0a2617.js"></script> <script type="module" crossorigin src="/assets/index.4d785533.js"></script>
<link rel="modulepreload" href="/assets/vendor.b622ee49.js"> <link rel="modulepreload" href="/assets/vendor.b622ee49.js">
<link rel="stylesheet" href="/assets/index.f7304069.css"> <link rel="stylesheet" href="/assets/index.f7304069.css">
</head> </head>

View file

@ -2027,7 +2027,7 @@ app.post('/api/upload', (req, res) => {
res.send(Images.imageFromDb(db, imageId)); res.send(Images.imageFromDb(db, imageId));
}); });
}); });
app.post('/newgame', express.json(), async (req, res) => { app.post('/api/newgame', express.json(), async (req, res) => {
const gameSettings = req.body; const gameSettings = req.body;
log.log(gameSettings); log.log(gameSettings);
const gameId = Util.uniqId(); const gameId = Util.uniqId();

View file

@ -16,19 +16,31 @@ const CONN_STATE_CONNECTING = 3 // connecting
const CONN_STATE_CLOSED = 4 // not connected (closed on purpose) const CONN_STATE_CLOSED = 4 // not connected (closed on purpose)
let ws: WebSocket let ws: WebSocket
let missedMessages: Array<any> = []
let changesCallback = (msg: Array<any>) => { let changesCallback = (msg: Array<any>) => {
// empty missedMessages.push(msg)
} }
let connectionStateChangeCallback = (state: number) => {
// empty let missedStateChanges: Array<number> = []
let connectionStateChangeCallback = (state: number) => {
missedStateChanges.push(state)
} }
// TODO: change these to something like on(EVT, cb)
function onServerChange(callback: (msg: Array<any>) => void): void { function onServerChange(callback: (msg: Array<any>) => void): void {
changesCallback = callback changesCallback = callback
for (const missedMessage of missedMessages) {
changesCallback(missedMessage)
} }
missedMessages = []
}
function onConnectionStateChange(callback: (state: number) => void): void { function onConnectionStateChange(callback: (state: number) => void): void {
connectionStateChangeCallback = callback connectionStateChangeCallback = callback
for (const missedStateChange of missedStateChanges) {
connectionStateChangeCallback(missedStateChange)
}
missedStateChanges = []
} }
let connectionState = CONN_STATE_NOT_CONNECTED let connectionState = CONN_STATE_NOT_CONNECTED
@ -48,7 +60,6 @@ function send(message: ClientEvent): void {
} }
} }
let clientSeq: number let clientSeq: number
let events: Record<number, GameEvent> let events: Record<number, GameEvent>

View file

@ -189,7 +189,7 @@ app.post('/api/upload', (req, res) => {
}) })
}) })
app.post('/newgame', express.json(), async (req, res) => { app.post('/api/newgame', express.json(), async (req, res) => {
const gameSettings = req.body as GameSettings const gameSettings = req.body as GameSettings
log.log(gameSettings) log.log(gameSettings)
const gameId = Util.uniqId() const gameId = Util.uniqId()