Files
UnrealEngineUWP/Engine/Source/Programs/PixelStreaming/WebServers/SignallingWebServer/modules/sessionMonitor.js
Ryan Durand 9ef3748747 Updating copyrights for Engine Programs.
#rnx
#rb none
#jira none

#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869242 in //Fortnite/Release-12.00/... via CL 10869536
#ROBOMERGE-BOT: FORTNITE (Main -> Dev-EngineMerge) (v613-10869866)

[CL 10870955 by Ryan Durand in Main branch]
2019-12-26 23:01:54 -05:00

71 lines
2.0 KiB
JavaScript

// Copyright Epic Games, Inc. All Rights Reserved.
// -- Communicates with the PixelStreaming SessionMonitor
const argv = require('yargs').argv;
var net = require('net');
var sessionMonitorPort = 0;
var socket;
var heartbeatIntervalId;
function sendMsg(type) {
// NOTE: Adding a null character at the end explicitly, so socket.write
// sends that too
let msg = `{"type":"${type}"}\0`;
console.log(`Sending ${msg} to session monitor.`);
socket.write(msg);
}
function initHeartbeat() {
sendMsg('heartbeat');
console.log(`Starting heartbeat timer`);
heartbeatIntervalId = setInterval(function () {
sendMsg('heartbeat');
}, 5000);
}
function init() {
sessionMonitorPort = (typeof argv.PixelStreamingSessionMonitorPort != 'undefined') ? argv.PixelStreamingSessionMonitorPort : 0;
if (sessionMonitorPort === 0) {
console.log('No --PixelStreamingMonitorPort specified (or is 0). Running unmonitored.');
return;
}
console.log(`Connecting to session monitor at ${sessionMonitorPort}`);
socket = net.Socket();
socket.setEncoding('utf8');
socket.connect(sessionMonitorPort, '127.0.0.1', function () {
console.log('Connected to session monitor');
initHeartbeat();
});
socket.on('error', function (error) {
console.log(`ERROR: Error connecting to the session monitor: ${error.message}. Running unmonitored.`);
});
// Because of .setEncoding('utf8'), 'data' event will receive full strings,
socket.on('data', function (data) {
// NOTE: It seems the null character itself stays in the string, so lets remove it
data = data.replace('\0', '');
console.log(`Received data ${data} from session monitor`);
let buffer = Buffer.from(data, 'utf8');
let msg = JSON.parse(data);
if (msg.type === 'exit') {
console.log(`Shutting down, as requested by the session monitor.`);
process.exit(0);
}
});
socket.on('close', function () {
if (typeof socket.remoteAddress != 'undefined') {
console.log('Connection to session monitor closed');
}
});
}
module.exports = {
// Functions
init
};