Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 记忆是如何在Heroku dynos中工作的?_Node.js_Heroku - Fatal编程技术网

Node.js 记忆是如何在Heroku dynos中工作的?

Node.js 记忆是如何在Heroku dynos中工作的?,node.js,heroku,Node.js,Heroku,假设我在节点中有一个动态创建的数组,我在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.

假设我在节点中有一个动态创建的数组,我在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);
});
现在,可以跨其他动态对象创建
连接
数组和
wm
weakmap


heroku能跨越每个dyno的变量吗?或者我需要使用其他数据结构(如数据库)来保存信息吗?

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

将状态存储在可管理和共享的外部位置,以最适合您的应用程序。Redis和Postgres是node最常见的两个系统

由于您使用的是socket.io,因此应确保遵循其跨多个节点的指南:


我看到它提供了一个小示例:
var io=require('socket.io')(3000)
var redis=require('socket.io redis')
io.adapter(redis({host:'localhost',port:6379}))
然而,还有更多具体的例子,特别是针对heroku的例子吗?没有,但很快就会在blog.heroku.com上出现(我们将发布一篇博客文章,演示如何在heroku上跨dynos使用socket.io,并进行粘性会话)