nodeJS使代码在隔离的vm上下文中运行或创建特定的全局变量

时间:2018-05-21 15:03:36

标签: javascript node.js global-variables node-modules node-vm2

在我正在进行的项目中,我需要为连接到TCP服务器的每个客户端提供不同的上下文... 我将在隔离的上下文中在VM上运行的代码

const bigArray = [{"bigArrayID":1,"name":"Xpto","children":[{"childID":1,"Name":"XptoChild1"},{"childID":2,"Name":"XptoChild2"}]},{"bigArrayID":2,"name":"Foo","children":[{"childID":3,"Name":"FooChild1"},{"childID":4,"Name":"FooChild2"}]},{"bigArrayID":3,"name":"Bar","children":[{"childID":5,"Name":"BarChild1"},{"childID":6,"Name":"BarChild2"}]}]
const result = bigArray.reduce(
  (result, element) => result.concat(element, element.children),
  []
)

// stringify is simply to prevent side-effects
// of stack snippet console behavior
console.log(JSON.stringify(result, null, 2))

为了让我更清楚我需要做什么:

- 应用程序的主要组件是核心,ap的每个部分都扩展了核心...

- 核心需要访问会话对象(现在作为参数)

- 在服务器出现的每个连接上,我需要创建一个新会话来处理客户端数据,如login,socket,sessionID等等...... 现在,我必须通过参数将会话传递给从核心继承的每个新实例...

OR

以某种方式创建一个仅存在于新Client实例中的全局变量 它将处理会话对象,该对象应该可以递归访问我将在客户端实例中调用的所有内容。

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

0 个答案:

没有答案