mirror of
https://codeberg.org/timelimit/timelimit-server.git
synced 2025-10-05 10:49:37 +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 { Router } from 'express'
|
||||||
|
import { WebsocketApi } from '../websocket'
|
||||||
|
|
||||||
export const createAdminRouter = () => {
|
export const createAdminRouter = ({ websocket }: {
|
||||||
|
websocket: WebsocketApi
|
||||||
|
}) => {
|
||||||
const router = Router()
|
const router = Router()
|
||||||
|
|
||||||
|
router.get('/status', (_, res) => {
|
||||||
|
res.json({
|
||||||
|
websocketClients: websocket.countConnections()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
return router
|
return router
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ export const createApi = ({ database, websocket, connectedDevicesManager }: {
|
||||||
res.sendStatus(401)
|
res.sendStatus(401)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
createAdminRouter()
|
createAdminRouter({ websocket })
|
||||||
)
|
)
|
||||||
|
|
||||||
return app
|
return app
|
||||||
|
|
|
@ -27,9 +27,13 @@ export const createWebsocketHandler = ({ connectedDevicesManager, database }: {
|
||||||
websocketServer: io.Server
|
websocketServer: io.Server
|
||||||
websocketApi: WebsocketApi
|
websocketApi: WebsocketApi
|
||||||
} => {
|
} => {
|
||||||
|
let socketCounter = 0
|
||||||
const server = io()
|
const server = io()
|
||||||
|
|
||||||
server.on('connection', (socket) => {
|
server.on('connection', (socket) => {
|
||||||
|
socketCounter++
|
||||||
|
socket.on('disconnect', () => socketCounter--)
|
||||||
|
|
||||||
socket.on('devicelogin', (deviceAuthToken: any, ack: any) => {
|
socket.on('devicelogin', (deviceAuthToken: any, ack: any) => {
|
||||||
socket.leaveAll()
|
socket.leaveAll()
|
||||||
|
|
||||||
|
@ -89,7 +93,8 @@ export const createWebsocketHandler = ({ connectedDevicesManager, database }: {
|
||||||
server
|
server
|
||||||
.to(deviceByAuthTokenRoom(deviceAuthToken))
|
.to(deviceByAuthTokenRoom(deviceAuthToken))
|
||||||
.emit('sign out')
|
.emit('sign out')
|
||||||
}
|
},
|
||||||
|
countConnections: () => socketCounter
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -101,4 +106,5 @@ export const createWebsocketHandler = ({ connectedDevicesManager, database }: {
|
||||||
export interface WebsocketApi {
|
export interface WebsocketApi {
|
||||||
triggerSyncByDeviceAuthToken: (params: {deviceAuthToken: string, isImportant: boolean}) => void
|
triggerSyncByDeviceAuthToken: (params: {deviceAuthToken: string, isImportant: boolean}) => void
|
||||||
triggerLogoutByDeviceAuthToken: (params: {deviceAuthToken: string}) => void
|
triggerLogoutByDeviceAuthToken: (params: {deviceAuthToken: string}) => void
|
||||||
|
countConnections: () => number
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue