From d02320b1d31017bf34026100ea7b0545195ae45c Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Sat, 15 Aug 2020 16:35:41 +0300 Subject: [PATCH] Webservice ping for keepalive and latency --- .gitlab-ci.yml | 6 +++--- web-service/server/src/index.js | 17 ++++++++++++++++- web-service/server/src/peer.js | 2 ++ 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 29b3549ac..24ae7f573 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -55,9 +55,9 @@ webserver-deploy: .build-windows: &build-windows - 'call vcvars64.bat' - - if not exist "../ftl_build" mkdir "../ftl_build" - - cd ../ftl_build - - cmake %CMAKE_ARGS% %CMAKE_ARGS_WINDOWS% -DREALSENSE_DIR="C:/Program Files (x86)/Intel RealSense SDK 2.0" -DOPENVR_DIR="C:/Program Files (x86)/OpenVRSDK" -DOPUS_DIR="C:/Program Files (x86)/Opus" ../ftl + - mkdir ./build + - cd ./build + - cmake %CMAKE_ARGS% %CMAKE_ARGS_WINDOWS% -DREALSENSE_DIR="C:/Program Files (x86)/Intel RealSense SDK 2.0" -DOPENVR_DIR="C:/Program Files (x86)/OpenVRSDK" -DOPUS_DIR="C:/Program Files (x86)/Opus" .. - devenv ftl.utu.fi.sln /build Release - rmdir /q /s "%DEPLOY_DIR%/%CI_COMMIT_REF_SLUG%" - mkdir "%DEPLOY_DIR%/%CI_COMMIT_REF_SLUG%" diff --git a/web-service/server/src/index.js b/web-service/server/src/index.js index baddc6e5e..da2a904af 100644 --- a/web-service/server/src/index.js +++ b/web-service/server/src/index.js @@ -40,6 +40,18 @@ let peer_data = []; let cfg_to_peer = {}; +setInterval(() => { + for (x in peer_by_id) { + let p = peer_by_id[x]; + let start = (new Date()).getMilliseconds(); + p.rpc("__ping__", (ts) => { + let end = (new Date()).getMilliseconds(); + p.latency = (end-start) / 2; + console.log("Ping: ", p.latency, ts); + }); + } +}, 20000); + /** * A client stream request object. Each source maintains a list of clients who * are wanting frames from that source. Clients can only request N frames at a @@ -143,7 +155,8 @@ RGBDStream.prototype.pushFrames = function(latency, spacket, packet) { //console.log("Frame = ", packet[0], packet[1]); for (let i=0; i < this.clients.length; i++) { - this.clients[i].push(this.base_uri, latency, spacket, packet); + let l = latency+this.peer.latency+this.clients[i].peer.latency; + this.clients[i].push(this.base_uri, Math.ceil(l), spacket, packet); } /*let i=0; @@ -346,6 +359,8 @@ app.ws('/', (ws, req) => { for (let c in cfg_to_peer) { if (cfg_to_peer[c] === p) delete cfg_to_peer[c]; } + + // FIXME: Clear peer_data }); p.bind("new_peer", (id) => { diff --git a/web-service/server/src/peer.js b/web-service/server/src/peer.js index f55f522c3..86aa78eec 100644 --- a/web-service/server/src/peer.js +++ b/web-service/server/src/peer.js @@ -35,6 +35,8 @@ function Peer(ws) { this.callbacks = {}; this.cbid = 0; + this.latency = 0; + this.uri = "unknown"; this.name = "unknown"; this.master = false; -- GitLab