initialize http server

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

View File

@ -37,26 +37,43 @@ class StreamingServer {
IHTTPServer = new Server(HTTPServerConfig) IHTTPServer = new Server(HTTPServerConfig)
IMediaServer = new MediaServer(MediaServerConfig) IMediaServer = new MediaServer(MediaServerConfig)
Db = new DbManager()
Sessions = new SessionsManager()
PublicStreamings = [] Db = new DbManager()
Sessions = new SessionsManager()
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
@ -64,7 +81,7 @@ class StreamingServer {
// get session // get session
const session = this.IMediaServer.getSession(id) const session = this.IMediaServer.getSession(id)
// create a userspaced session for the client with containing session // create a userspaced session for the client with containing session
this.Sessions.newSession(id, session) this.Sessions.newSession(id, session)
}, },
@ -74,9 +91,11 @@ class StreamingServer {
}, },
doneConnect: async (id, args) => { doneConnect: async (id, args) => {
// this event is fired when client has ended the connection // this event is fired when client has ended the connection
// 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()
} }
} }