Sie können jede Sitzungs-ID verwenden, die auch auf der Registerkarte eindeutig ist. Nicht ganz sicher, wie die aktuelle Session-ID zu bekommen, aber es sollte es irgendwo sein (man kann es in Meteor.default_server.sessions
sehen, so gibt es immer noch einen Weg:
Kunden js
Meteor.call("test", Meteor.default_connection._lastSessionId, function(err,result) {
console.log(result);
});
Server-Seite Js
Session = {
set : function(key, value, sessionid) {
console.log(Meteor.default_server.sessions[sessionid]);
if(!Meteor.default_server.sessions[sessionid].session_hash) Meteor.default_server.sessions[sessionid].session_hash = {};
Meteor.default_server.sessions[sessionid].session_hash.key = value;
},
get : function(key, sessionid) {
if(Meteor.default_server.sessions[sessionid].session_hash)
return Meteor.default_server.sessions[sessionid].session_hash.key;
},
equals: function(key, value, sessionid) {
return (this.get(key, sessionid) == value)
},
listAllSessionids: function() {
return _.pluck(Meteor.default_server.sessions, "id");
}
};
Meteor.methods({
test:function(sessionid) {
if(!Session.get("initial_load", sessionid)) Session.set("initial_load", new Date().getTime(), sessionid);
return Session.get("initial_load", sessionid);
}
});
ich in Meteor.default_connection._sessions
Haken um die Werte zu speichern, so dass eine Art Garbage collection beteiligt theres, wenn die Sitzung nicht gültig nicht mehr (d. h. der Benutzer hat seine Tabs geschlossen), um zu verhindern, dass Speicher verschwendet wird. In livedata_server.js
werden diese alten Sitzungen nach 1 Minute ohne Aktivität auf der DDP-Leitung (wie der Herzschlag) zerstört.
Da der Server die Sitzungen aller Benutzer anzeigen kann, können Sie mit der Adresse sessionid
auf die Sitzungsdaten eines anderen Benutzers zugreifen. und listAllSessionids
, um ein Array aller derzeit aktiven Session-IDs auszugeben.
automatisch Sitzung wie this.userId in einem Verfahren festgelegt, ohne einen param in einem Anruf mit
Es ist wie es aussieht für diese diese Funktionalität aber es ist nicht vollständig angeschlossen. Die Session-ID würde in this.sessionData
gespeichert werden, aber es ist wahrscheinlich noch nicht abgeschlossen. Sein dort in method
genannt zu werden, aber gibt es keine Möglichkeit, dass sie noch gesetzt ist (in livedata_connection.js
& livedata_server.js
)
Wie haben Sie mit Session identifiziert? Kein normales JS-Objekt funktioniert genauso gut/es gibt keine Reaktivität auf dem Server, also wäre es das gleiche wie Sitzung – Akshat
Normales Js-Objekt funktioniert nicht, weil die Objekte zwischen den Sitzungen geteilt werden! Ich habe dies getestet, indem ich auf die Konsole logge, wann immer die Objekte definiert sind, es ist immer einmal beim Serverstart. –
Können Sie den Code anzeigen, den Sie in der vorherigen Version verwendet haben? – cmather