mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Merge pull request #4816 from node-red/4814-multiplayer-uncaught
Guard against undefined sessions in multiplayer
This commit is contained in:
commit
93974ccd92
@ -23,14 +23,16 @@ module.exports = {
|
|||||||
if (existingSessionId) {
|
if (existingSessionId) {
|
||||||
connections.delete(opts.session)
|
connections.delete(opts.session)
|
||||||
const session = sessions.get(existingSessionId)
|
const session = sessions.get(existingSessionId)
|
||||||
session.active = false
|
if (session) {
|
||||||
session.idleTimeout = setTimeout(() => {
|
session.active = false
|
||||||
sessions.delete(existingSessionId)
|
session.idleTimeout = setTimeout(() => {
|
||||||
}, 30000)
|
sessions.delete(existingSessionId)
|
||||||
runtime.events.emit('comms', {
|
}, 30000)
|
||||||
topic: "multiplayer/connection-removed",
|
runtime.events.emit('comms', {
|
||||||
data: { session: existingSessionId }
|
topic: "multiplayer/connection-removed",
|
||||||
})
|
data: { session: existingSessionId }
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
runtime.events.on('comms:message:multiplayer/connect', (opts) => {
|
runtime.events.on('comms:message:multiplayer/connect', (opts) => {
|
||||||
@ -91,29 +93,31 @@ module.exports = {
|
|||||||
const sessionId = connections.get(opts.session)
|
const sessionId = connections.get(opts.session)
|
||||||
const session = sessions.get(sessionId)
|
const session = sessions.get(sessionId)
|
||||||
|
|
||||||
if (opts.user) {
|
if (session) {
|
||||||
if (session.user.anonymous !== opts.user.anonymous) {
|
if (opts.user) {
|
||||||
session.user = opts.user
|
if (session.user.anonymous !== opts.user.anonymous) {
|
||||||
runtime.events.emit('comms', {
|
session.user = opts.user
|
||||||
topic: 'multiplayer/connection-added',
|
runtime.events.emit('comms', {
|
||||||
excludeSession: opts.session,
|
topic: 'multiplayer/connection-added',
|
||||||
data: session
|
excludeSession: opts.session,
|
||||||
})
|
data: session
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
session.location = opts.data
|
session.location = opts.data
|
||||||
|
|
||||||
const payload = {
|
const payload = {
|
||||||
session: sessionId,
|
session: sessionId,
|
||||||
workspace: opts.data.workspace,
|
workspace: opts.data.workspace,
|
||||||
node: opts.data.node
|
node: opts.data.node
|
||||||
|
}
|
||||||
|
runtime.events.emit('comms', {
|
||||||
|
topic: 'multiplayer/location',
|
||||||
|
data: payload,
|
||||||
|
excludeSession: opts.session
|
||||||
|
})
|
||||||
}
|
}
|
||||||
runtime.events.emit('comms', {
|
|
||||||
topic: 'multiplayer/location',
|
|
||||||
data: payload,
|
|
||||||
excludeSession: opts.session
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user