nodeJS заставляет код выполняться в изолированном контексте VM или создает определенную глобальную переменную - PullRequest
0 голосов
/ 21 мая 2018

В проекте, над которым я сейчас работаю, мне нужен отдельный контекст для каждого клиента, подключенного к TCP-серверу ... Код, который я буду запускать на ВМ в изолированном контексте

 var sbox = { Client : require("./Client"),  server: {clients:[]}, socket:socket };
      vm.createContext(sbox)
      vm.runInNewContext(`
      let client = new Client(socket);
      server.clients.push(client);
      `, sbox)

Чтобы было немного яснее, что мне нужно сделать:

- Основным компонентом приложения является ядро, а каждая отдельная часть АР расширяет ядро ​​...

-Ядро должно иметь доступ к объекту сеанса (прямо сейчас в качестве параметра)

-На каждом подключении, которое появляется к серверу, мне нужно создать новый сеанс, который будет обрабатывать данные клиента, такие как логин, сокет,sessionID и так далее ... сейчас мне нужно передавать сеанс по параметру в каждый новый экземпляр, который наследуется от ядра ...

ИЛИ

каким-то образом создать глобальную переменную, которая будет житьтолько в случае нового клиента, и он будет обрабатывать объект сеанса, который должен быть рекурсивно доступен для всего, что я буду вызывать внутри экземпляра клиента.

//client module
const d = require('./sth');
function client(socket){
    glob_ses = new Clien_stession(socket);
    let a = new b();
    b.start();
}
// end of module 

//sth module
function client(socket){
    let login = glob_ses.getLogin
}
client.prototype.start() = ()=>{
    //start app that makes use of the login or some other staff that session will handle
}
// end of module 


server.connection = net.createServer((socket) => {
// code
const client = require('./client');
let C = new client(socket)
server.client.push({clientAdr:`${socket.remoteAddress}:${socket.remotePort}`,clientIsn: C});
//code
});
...