记忆如何在Heroku dynos中工作?

假设我在节点中有一个dynamic创build的数组,我正在使用一个heroku dyno:

var connections = []; var wm = new WeakMap(); io.sockets.on('connection', function(socket) { socket.once('disconnect', function() { connections.splice(connections.indexOf(socket), 1); socket.disconnect(); console.log("Disconnected: %s sockets remaining.", connections.length); }); socket.on('idAndApi', (data) => { wm.set(socket, data); }); connections.push(socket); console.log("Connected: %s sockets connected.", connections.length); }); 

现在, connections数组和wm weakmap可以在其他dynos中创build。

heroku能够跨越每个testing仪跨越这些variables吗? 还是我需要使用其他一些数据结构(如数据库)来保存信息?

Dynos是独立的,节点进程应该是无状态的(在任何环境下,Heroku或其他)都是如此。

将状态从外部存储到可以pipe理和共享的位置,以最适合您的应用。 Redis和Postgres是最常用的两个节点系统。

由于您使用的是socket.io,因此您应该确保按照指南跨越多个节点:

http://socket.io/docs/using-multiple-nodes/