İki nodejs sunucum var (web-server, socket-server), birbirine socket.io tarafından bağlanmış. Web servisinde express.js ve passport.js kimlik doğrulama aracı olarak kullanıyorum.Neden connect-mongo her istek için yeni bir oturum oluşturur?
var express = require('express'),
mongo = require('mongodb'),
io = require('socket.io'),
passport = require('passport'),
LocalStrategy = require('passport-local').Strategy,
MongoStore = require('connect-mongo')(express);
app.configure(function() {
app.use(express.cookieParser());
app.use(express.methodOverride());
app.use(express.bodyParser());
app.use(express.session({
secret: 'keyboard cat',
store: new MongoStore({
db: 'MyDatabase'
})
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
app.use(express.static(__dirname + '/htdocs'));
});
I-mongo bağlamak kullanmak, her http-istek için yeni bir oturum oluşturur:
Bu benim web sunucusu yapılandırma olduğunu.
{
"_id" : "UCnXade6Bk6ofOZ+jiEgzyH8",
"session" : "{\"cookie\":{\"originalMaxAge\":31536000000,\"expires\":\"2014-03-07T13:07:45.703Z\",\"httpOnly\":true,\"path\":\"/\"},\"passport\":{\"user\":\"50cae08806e31ea2e5634e3f\"}}",
"expires" : new Date("7.3.2014 19:07:45")
}
Ve F5 tuşuna veya soket alırken bu element, her zaman oluşturur:
Bu eleman talebinde günlüğüne ile yaratır.
{
"_id" : "JhypbYFtj1CGOK/ylMhG8+Yk",
"session" : "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"passport\":{}}",
"expires" : new Date("21.3.2013 19:03:38")
}
Web sunucusu yuva bağlantısı aldığında, connect-mongo yeni bir oturum oluşturur. Dakikada yaklaşık 50 yeni belge var.
Sebep ne olabilir? sayfayı güncelleyerek durumunda
GÜNCELLEME, app.use(express.favicon())
eklemek ucu yardımcı oldu.
Soket sorusu hala geçerli.
function sendPortalJSON (portal_id, data, _event) {
https.get({
host : ....,
port : ....,
path : "/" + _event + "?data=" + encodeURIComponent(JSON.stringify (data))
}).on('error', function (err) {
});
}
...
sendPortalJSON(1, agent_data[i].d, "cpu-details");
Ve web sunucusu üzerinde
Benim soket sunucu kodu:
app.get('/cpu-details', function (req, res) { });
Müthiş! Express.favicon() 'yi kullandığımda, F5'e bastığımda her şey iyi geçti. Ancak, socket.io sunucumu başlattığımda, connect-mongo hala yeni belgeler oluşturmaya devam ediyor. Soket-sunucumun bazı kodlarını ekledim. – msmirnov
Pasaport ve/veya oturumların middlewares * işleminden geçirilmemesi gereken herhangi bir rota veya ara katman yerleştirmeden önce mutlaka * bu middlewares. Sadece meraklı, ama ayrı bir socket.io sunucusu kullanmanın bir nedeni var mı? Socket.io ve Express'i tek bir sunucu uygulamasında birleştirebilirsiniz. – robertklep
Yanlışlıkla söyledim. Я iki nodejs sunucusuna sahiptir ve bunlar arasında socket.io ile bağlantı yapılır. – msmirnov