Add clearInterval calls to clean up closure.

This commit is contained in:
Brian E. Granger 2020-10-03 14:30:22 -07:00
parent 61512021a9
commit 7533057249

View File

@ -216,9 +216,7 @@ exports.setupWSConnection = (conn, req, { docName = req.url.slice(1).split('?')[
doc.conns.set(conn, new Set()) doc.conns.set(conn, new Set())
// listen and reply to events // listen and reply to events
conn.on('message', /** @param {ArrayBuffer} message */ message => messageListener(conn, doc, new Uint8Array(message))) conn.on('message', /** @param {ArrayBuffer} message */ message => messageListener(conn, doc, new Uint8Array(message)))
conn.on('close', () => {
closeConn(doc, conn)
})
// Check if connection is still alive // Check if connection is still alive
let pongReceived = true let pongReceived = true
const pingInterval = setInterval(() => { const pingInterval = setInterval(() => {
@ -233,12 +231,18 @@ exports.setupWSConnection = (conn, req, { docName = req.url.slice(1).split('?')[
conn.ping() conn.ping()
} catch (e) { } catch (e) {
closeConn(doc, conn) closeConn(doc, conn)
clearInterval(pingInterval)
} }
} }
}, pingTimeout) }, pingTimeout)
conn.on('close', () => {
closeConn(doc, conn)
clearInterval(pingInterval)
})
conn.on('pong', () => { conn.on('pong', () => {
pongReceived = true pongReceived = true
}) })
// send sync step 1 // send sync step 1
const encoder = encoding.createEncoder() const encoder = encoding.createEncoder()
encoding.writeVarUint(encoder, messageSync) encoding.writeVarUint(encoder, messageSync)