Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Socket.io and session data

Is this a suitable way of storing my temporary app data?

socket.on('connection', function(client){ 
  client.myappsdata = {
    a: true,
    b: false
  }
}
like image 655
Thomas Avatar asked Jun 03 '11 17:06

Thomas


1 Answers

I prefer something slightly more heavy.

Pseudo-Code:

// 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 each client has a sessionId so store their data in a hash keyed by that sessionId

like image 83
Raynos Avatar answered Sep 18 '22 00:09

Raynos