6
這是存儲我的臨時應用程序數據的合適方式嗎?Socket.io和會話數據
socket.on('connection', function(client){
client.myappsdata = {
a: true,
b: false
}
}
這是存儲我的臨時應用程序數據的合適方式嗎?Socket.io和會話數據
socket.on('connection', function(client){
client.myappsdata = {
a: true,
b: false
}
}
我更喜歡稍微重一些的東西。
僞代碼:
// ClientManager.js
var Manager = new function() {
this._clients = [];
this.set = function(client, data) {
this._clients[client.sessionId] = data;
};
this.get = function(client) {
return this._clients[client.sessionId];
}
};
module.exports = function() {
return Object.create(Manager);
};
// main.js
var manager = require("ClientManager")();
/* ... */
socket.on("connection", function(client) {
manager.set(client, {
/* ... */
});
}
Bassically每個客戶都有一個sessionId
所以他們的數據存儲在由的sessionId
任何理由不這樣做我是怎麼做鍵控的哈希? – Thomas 2011-06-03 19:47:28
@Thomas上述方法更具可擴展性。此外,我將不得不遍歷socket.io代碼來確保「客戶端」對象遍佈各地。我所知道的是'sessionId'可以安全地使用密鑰/哈希來連接到客戶端。因此,將數據存儲在由您的解決方案中的sessionId – Raynos 2011-06-03 19:49:23
@Raynos鍵入的散列中,因爲get和set方法都將客戶端對象作爲第一個參數,所以您必須將所有客戶端都傳遞給所有客戶端,不是嗎?也就是說,國際海事組織是正常的和不可避免的,因爲我們必須得到客戶的參考才能獲取其數據。 – Qlimax 2012-08-28 15:08:16