假设我在Node中创建了一个动态数组,并且将其运行在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
弱引用可能会被创建在其他的dynos上。
Heroku能否跨越每个dyno来覆盖这些变量?还是我需要使用其他数据结构(如数据库)来保存信息?
var io = require('socket.io')(3000);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));
但是,是否有更详细的示例,特别是关于Heroku的? - E.S.