aboutsummaryrefslogtreecommitdiff
path: root/src/SocketIO
diff options
context:
space:
mode:
Diffstat (limited to 'src/SocketIO')
-rw-r--r--src/SocketIO/index.js42
1 files changed, 31 insertions, 11 deletions
diff --git a/src/SocketIO/index.js b/src/SocketIO/index.js
index 88b5459..ff8f378 100644
--- a/src/SocketIO/index.js
+++ b/src/SocketIO/index.js
@@ -12,6 +12,7 @@ let logger = require(__appdir + "/src/Logger");
var exec = require('child_process').exec;
var CryptoJS = require("crypto-js");
let fs = require("fs");
+const { performance } = require("perf_hooks");
let neoModules;
@@ -82,7 +83,7 @@ function createOpenSocketNamespace(io) {
}
session_tokens[token] = {
- expire: (~~Date.now())+(86400),
+ expire: (~~Date.now())+(2678400),
host: socket.handshake.headers.host,
user: {username: user.username}
};
@@ -139,7 +140,7 @@ function authorize_middleware(socket, next) {
const token = socket.handshake.auth.token;
if (session_tokens.hasOwnProperty(token) &&
- session_tokens[token].host === socket.handshake.headers.host &&
+ // session_tokens[token].host === socket.handshake.headers.host &&
session_tokens[token].expire > (~~(Date.now()))) {
socket.data.user = session_tokens[token].user;
next();
@@ -266,8 +267,8 @@ function createAuthorizedNamespace(io) {
/* Editor/debugger */
let onProcStart = () => socket.emit("editor:proc:start");
let onProcStop = (code) => socket.emit("editor:proc:exit", code);
- let onProcStdout = (stdout) => socket.emit("editor:proc:stdout", stdout);
- let onProcStderr = (stderr) => socket.emit("editor:proc:stderr", stderr);
+ let onProcStdout = (stdout) => socket.volatile.emit("editor:proc:stdout", stdout);
+ let onProcStderr = (stderr) => socket.volatile.emit("editor:proc:stderr", stderr);
let closeDebugger = () => {
debuggerOpen = false;
neoModules.neoRuntimeManager.event.removeListener("proc:start", onProcStart);
@@ -277,6 +278,10 @@ function createAuthorizedNamespace(io) {
return neoModules.neoRuntimeManager.stopDebugger();
};
socket.on("editor:open", (modeId, fn) => {
+ neoModules.neoRuntimeManager.event.on("proc:start", onProcStart);
+ neoModules.neoRuntimeManager.event.on("proc:exit", onProcStop);
+ neoModules.neoRuntimeManager.event.on("proc:stdout", onProcStdout);
+ neoModules.neoRuntimeManager.event.on("proc:stderr", onProcStderr);
let res = neoModules.neoRuntimeManager.startDebugger(modeId);
if (!res.success) { fn(res); return; }
logger.info(`Starting debugger for ${modeId}.`)
@@ -284,20 +289,21 @@ function createAuthorizedNamespace(io) {
fn({success: true})
socket.emit("editor:code", modeId, res.code);
- neoModules.neoRuntimeManager.event.on("proc:start", onProcStart);
- neoModules.neoRuntimeManager.event.on("proc:exit", onProcStop);
- neoModules.neoRuntimeManager.event.on("proc:stdout", onProcStdout);
- neoModules.neoRuntimeManager.event.on("proc:stderr", onProcStderr);
if (neoModules.neoRuntimeManager.modeRunning()) {
socket.emit("editor:proc:start");
}
});
socket.on("editor:save", (modeId, code, fn) => {
- if (!debuggerOpen) { fn({success: false, reason: "Debugger not open"}); return; };
+ if (!debuggerOpen) { fn({success: false, reason: "debugger not open"}); return; };
fn(neoModules.neoRuntimeManager.saveModeCode(modeId, code));
});
socket.on("editor:startmode", (fn) => {
- fn(neoModules.neoRuntimeManager.startMode());
+ if (neoModules.neoRuntimeManager.modeRunning()) {
+ fn({success: true});
+ socket.emit("editor:proc:start");
+ } else {
+ fn(neoModules.neoRuntimeManager.startMode());
+ }
});
socket.on("editor:stopmode", (fn) => {
fn(neoModules.neoRuntimeManager.stopMode());
@@ -327,8 +333,12 @@ function createAuthorizedNamespace(io) {
neoModules.neoRuntimeManager.event.on("matrix", (matrix) => {
authorizedNamespace.emit("matrix", matrix);
});
+ let lastStripBufferEmit = performance.now();
neoModules.neoRuntimeManager.event.on("strip_buffer", (strip_buffer) => {
- authorizedNamespace.emit("strip_buffer", strip_buffer);
+ if ((performance.now() - lastStripBufferEmit) > 50) {
+ authorizedNamespace.volatile.emit("strip_buffer", strip_buffer);
+ lastStripBufferEmit = performance.now();
+ } // We just drop packets
});
neoModules.selfUpdater.updater.event.on("step", (step) => {
authorizedNamespace.emit("updater:step", step);
@@ -342,6 +352,16 @@ function createAuthorizedNamespace(io) {
}
/**
+ * Protect
+ */
+function limitEmits(fn) {
+ let lastEmit = performance.now();
+
+ return {
+ }
+}
+
+/**
* Creates an access-token from the clients host-name and the current EPOCH.
*
* @param {client}