2016-03-21 15 views
1

ı düğümünde dinamik olarak oluşturulan bir dizi var diyelim ve bir Heroku Dyno bunu çalıştırıyorum:Bellek, Heroku dynos'ta nasıl çalışır?

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); 
}); 

Şimdi, connections dizi ve wm weakmap diğer dinamometre genelinde oluşabileceğini mümkündür.

Heroku, bu değişkenleri her bir dyno'da kapsayabilecek mi? Veya bilgileri saklamak için başka bir veri yapısı (veritabanı gibi) kullanmam gerekir mi?

cevap

2

Dynos bağımsızdır ve düğüm işlemleri vatansız olmalıdır (bu, herhangi bir ortamda, Heroku'da veya başka şekilde geçerlidir). Durumu harici olarak, uygulamanıza en uygun şekilde yönetilip paylaşılabileceği bir yerde depolayın. Redis ve Postgres, düğüm için en yaygın iki sistemdir. Ben mini bir örneğini sunmaktadır bkz

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

+0

: Eğer socket.io kullandığınız yana

, birden düğümleri kapsayan onların kılavuzu takip emin olmalısınız = gerektiren 'var io (' socket.io ') (3000); 'var redis = gerekli (' socket.io-redis '); ' io.adapter (redis ({host:' localhost ', bağlantı noktası: 6379})); Ancak, özellikle heroku üzerinde odaklanmış daha fazla örnekleri var mı? –

+0

Yok, ama yakında blog.heroku.com'da olacak (Heroku'da socket.io'yu dynos'ta ve yapışkan oturumlarda kullanarak bir demo ile bir blog yazısı yayınlamak üzereyiz) – hunterloftis