Add API to get number of active sockets

This commit is contained in:
Jonas L 2019-06-17 00:00:00 +00:00
parent 567c38271a
commit f617aebf1b
3 changed files with 18 additions and 3 deletions

View file

@ -16,9 +16,18 @@
*/
import { Router } from 'express'
import { WebsocketApi } from '../websocket'
export const createAdminRouter = () => {
export const createAdminRouter = ({ websocket }: {
websocket: WebsocketApi
}) => {
const router = Router()
router.get('/status', (_, res) => {
res.json({
websocketClients: websocket.countConnections()
})
})
return router
}

View file

@ -62,7 +62,7 @@ export const createApi = ({ database, websocket, connectedDevicesManager }: {
res.sendStatus(401)
}
},
createAdminRouter()
createAdminRouter({ websocket })
)
return app

View file

@ -27,9 +27,13 @@ export const createWebsocketHandler = ({ connectedDevicesManager, database }: {
websocketServer: io.Server
websocketApi: WebsocketApi
} => {
let socketCounter = 0
const server = io()
server.on('connection', (socket) => {
socketCounter++
socket.on('disconnect', () => socketCounter--)
socket.on('devicelogin', (deviceAuthToken: any, ack: any) => {
socket.leaveAll()
@ -89,7 +93,8 @@ export const createWebsocketHandler = ({ connectedDevicesManager, database }: {
server
.to(deviceByAuthTokenRoom(deviceAuthToken))
.emit('sign out')
}
},
countConnections: () => socketCounter
}
return {
@ -101,4 +106,5 @@ export const createWebsocketHandler = ({ connectedDevicesManager, database }: {
export interface WebsocketApi {
triggerSyncByDeviceAuthToken: (params: {deviceAuthToken: string, isImportant: boolean}) => void
triggerLogoutByDeviceAuthToken: (params: {deviceAuthToken: string}) => void
countConnections: () => number
}