mirror of
https://codeberg.org/timelimit/timelimit-server.git
synced 2025-10-05 02:39:48 +02:00
Add API to get number of active sockets
This commit is contained in:
parent
567c38271a
commit
f617aebf1b
3 changed files with 18 additions and 3 deletions
|
@ -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
|
||||
}
|
||||
|
|
|
@ -62,7 +62,7 @@ export const createApi = ({ database, websocket, connectedDevicesManager }: {
|
|||
res.sendStatus(401)
|
||||
}
|
||||
},
|
||||
createAdminRouter()
|
||||
createAdminRouter({ websocket })
|
||||
)
|
||||
|
||||
return app
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue