session close added

This commit is contained in:
C
2022-11-30 16:07:56 +05:00
parent 12080c106a
commit 288718779d
14 changed files with 29 additions and 4 deletions
@@ -0,0 +1,8 @@
завершение сессии:
WebRTC завершает своё выполнение если пользователи неактивны в течение N секунд
Session Server видит что WebRTC сервер завершил выполнение, отправляет уведомление Coordinator
Coordinator удаляет сессию из базы данных
продление сессии:
WebRTC сервер понимает что сессия подходит к концу спрашивает у Session Server продолжения сессии
Session Server отправляет запрос на продление сессии Coordinator
Coordinator смотрит можно ли продлить сессию и возвращает ответ
@@ -1,5 +1,5 @@
{ {
"ip" : "127.0.0.1", "ip" : "192.168.1.115",
"port" : "3001", "port" : "3001",
"mongodb_url" : "mongodb://127.0.0.1:27017/", "mongodb_url" : "mongodb://127.0.0.1:27017/",
"database_name" : "pixel_streaming" "database_name" : "pixel_streaming"
@@ -70,7 +70,7 @@ async function create_response(request, callback) {
// create session on session server // create session on session server
new http_client(free_server.ip, free_server.port).post( new http_client(free_server.ip, free_server.port).post(
`{"verb":"CREATE_SESSION", "title":"${request.title}", "session_id":"${session_id}"}`, async function(answer) { JSON.stringify({verb:'CREATE_SESSION', title:request.title, session_id:session_id}), async function(answer) {
var json_answer = await JSON.parse(answer) var json_answer = await JSON.parse(answer)
@@ -90,7 +90,7 @@ async function create_response(request, callback) {
await session_active.insertOne({ await session_active.insertOne({
server_id:free_server.server_id, server_id:free_server.server_id,
session_id:session_id, session_id:session_id,
link:json_answer.link, connection_link:json_answer.link,
connection_code:code connection_code:code
}) })
response = {msg:'SESSION_CREATED', link:json_answer.link} response = {msg:'SESSION_CREATED', link:json_answer.link}
@@ -106,6 +106,11 @@ async function create_response(request, callback) {
} else if (request.verb == 'CONNECT_SESSION') { } else if (request.verb == 'CONNECT_SESSION') {
callback(response) callback(response)
return return
} else if (request.verb == 'CLOSE_SESSION') {
await database.collection('session_active').deleteOne({session_id:request.session_id})
response = {msg:"SESSION_CLOSED", session_id:request.session_id}
callback(response)
return
} else { } else {
response = {msg:'UNKNOWN_VERB'} response = {msg:'UNKNOWN_VERB'}
callback(response) callback(response)
@@ -7,6 +7,7 @@ module.exports = class http_client {
} }
async post(data, callback_answer, callback_error) { async post(data, callback_answer, callback_error) {
// Build the post string from an object // Build the post string from an object
// An object of options to indicate where to post to // An object of options to indicate where to post to
var post_options = { var post_options = {
host: this.#ip, host: this.#ip,
@@ -6,6 +6,10 @@
"app_begin": 47000, "app_begin": 47000,
"http_begin": 47500 "http_begin": 47500
}, },
"coordinator":{
"ip":"192.168.1.115",
"port":3001
},
"webrtc_args_static":{ "webrtc_args_static":{
"cirrus_path":"D:/shared/Builds/Ivaz_Optimized_2/Samples/PixelStreaming/WebServers/SignallingWebServer/cirrus.js" "cirrus_path":"D:/shared/Builds/Ivaz_Optimized_2/Samples/PixelStreaming/WebServers/SignallingWebServer/cirrus.js"
}, },
@@ -88,7 +88,14 @@ async function create_response(request, callback) {
else { else {
app_proc.kill('SIGINT') app_proc.kill('SIGINT')
} }
//new http_client(ip, port).post() new http_client(config.coordinator.ip, config.coordinator.port).post(
JSON.stringify({verb:'CLOSE_SESSION', session_id:request.session_id}), function(answer) {
},
function(error) {
})
}) })
response = {msg:'SESSION_CREATED', link:`http://${config.ip+':'+http_port}`} response = {msg:'SESSION_CREATED', link:`http://${config.ip+':'+http_port}`}