mirror of
https://codeberg.org/timelimit/timelimit-server.git
synced 2026-08-31 19:03:45 +02:00
Add API to get number of active sockets
This commit is contained in:
+10
-1
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user