sbis3-node-ws
Version:
Модуль позволяет использовать ядро интерфейсного фреймворка sbis3-ws(`core.js`) и модуль работы с данными (`Source.js`) в приложении на nodejs.
87 lines (79 loc) • 2.12 kB
JavaScript
/**
* Created by Shilovda on 14.08.2015.
*/
define('Core/SessionStorage', function() {
var saveSSTimeout;
// На тот случай, если у нас нет sessionStorage, то храним просто все в объекте
var storage = sessionStorage || {
getItem: function() {},
setItem: function() {},
removeItem: function() {}
};
var sid = $ && $.cookie('sid');
var sessionName = 'wsss';
var ss = storage.getItem(sessionName);
if (ss) {
try {
ss = JSON.parse(ss) || {};
} catch(e) {
ss = {};
}
} else {
ss = {};
}
if (ss.sid && sid) {
var
w = ss.sid.split("-"),
n = sid.split("-");
//если изменились пользователи или клиент, то чистим
if(w[0] !== n[0] || w[1] !== n[1]) {
clearSS();
ss.sid = sid;
}
} else if (!ss.sid) {
ss.sid = sid;
}
function clearSS() {
storage.removeItem(sessionName);
ss = {};
}
function saveSS() {
try {
if (!saveSSTimeout) {
saveSSTimeout = setTimeout(function() {
storage.setItem(sessionName, JSON.stringify(ss));
saveSSTimeout = null;
}, 500);
}
} catch (e) {
// ignore
}
}
var SessionStorage = {
get: function(key) {
return ss[key];
},
set: function(key, value) {
if (value == null && typeof key == 'object' && Object.prototype.toString.call(key) == '[object Object]') {
// Обходимся без нашего helpers
for (var k in key) {
if (key.hasOwnProperty(k)) {
ss[k] = key[k];
}
}
} else {
ss[key] = value;
}
saveSS();
},
remove: function(key) {
delete ss[key];
saveSS();
},
toObject: function() {
return ss;
}
};
$ws.single.SessionStorage = SessionStorage;
return SessionStorage;
});