initialize http server

This commit is contained in:
srgooglo 2022-05-12 10:53:43 +02:00
parent 2febb13e04
commit 6b9cc0a3c5

View File

@ -42,21 +42,38 @@ class StreamingServer {
Sessions = new SessionsManager() Sessions = new SessionsManager()
PublicStreamings = []
constructor() { constructor() {
this.registerMediaServerEvents() this.registerMediaServerEvents()
this.registerHTTPServerEndpoints()
// fire initization // fire initization
this.initialize() this.initialize()
} }
registerMediaServerEvents = () => { registerMediaServerEvents = () => {
Object.keys(this.mediaServerEvents).forEach(eventName => { Object.keys(this.mediaServerEvents).forEach((eventName) => {
this.IMediaServer.on(eventName, this.mediaServerEvents[eventName]) this.IMediaServer.on(eventName, this.mediaServerEvents[eventName])
}) })
} }
registerHTTPServerEndpoints = () => {
Object.keys(this.httpServerEndpoints).forEach((route) => {
this.IHTTPServer.registerHTTPEndpoint({
route: route,
...this.httpServerEndpoints[route]
})
})
}
httpServerEndpoints = {
"/streams": {
method: "get",
fn: async (req, res) => {
return res.json(this.Sessions.publicStreams)
}
}
}
mediaServerEvents = { mediaServerEvents = {
preConnect: async (id, args) => { preConnect: async (id, args) => {
// this event is fired after client is connected // this event is fired after client is connected
@ -77,6 +94,8 @@ class StreamingServer {
// stop the session // stop the session
this.Sessions.removeSession(id) this.Sessions.removeSession(id)
this.Sessions.unpublishStream(id)
}, },
prePublish: async (id, StreamPath, args) => { prePublish: async (id, StreamPath, args) => {
// this event is fired before client is published // this event is fired before client is published
@ -87,20 +106,22 @@ class StreamingServer {
key: streamingKey key: streamingKey
}) })
console.log(streamingUserspace)
if (!streamingUserspace) { if (!streamingUserspace) {
this.Sessions.removeSession(id) this.Sessions.removeSession(id)
return false return false
} }
PublicStreamings.push(id) this.Sessions.publishStream({
id,
user_id: streamingUserspace.user_id,
})
} }
} }
initialize = async () => { initialize = async () => {
await this.Db.connect() await this.Db.connect()
this.IMediaServer.run() this.IMediaServer.run()
this.IHTTPServer.initialize()
} }
} }