タブに固有の各セッションIDを使用することもできます。現在のセッションIDを取得する方法がよくわかりませんが、どこかにあるはずです(で確認できるMeteor.default_server.sessions
ので、まだ方法があります。
クライアントjs
Meteor.call("test", Meteor.default_connection._lastSessionId, function(err,result) {
console.log(result);
});
サーバー側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);
}
});
値を格納するためにフックしMeteor.default_connection._sessions
て、セッションが有効でなくなったとき(つまり、ユーザーがタブを閉じたとき)に何らかの種類のガベージコレクションが含まれるようにして、メモリの浪費を防ぎます。これらlivedata_server.js
の古いセッションでは、DDPワイヤでアクティビティが1分間行われなかった場合(ハートビートなど)に破棄されます。
サーバーは全員のセッションを確認できるため、を使用しsessionid
て別のユーザーのセッションデータにアクセスできます。listAllSessionids
現在アクティブなすべてのセッションIDの配列を提供します。
呼び出しでパラメータを使用せずに、メソッドでthis.userIdのようなセッションを自動的に設定します
これには機能があるようですが、完全には接続されていません。セッションIDはに保存されますthis.sessionData
が、まだ完了していない可能性があります。呼び出されることはありますが、method
まだ設定されている場所はありません(in livedata_connection.js
&livedata_server.js
)