Node.js + Socket.io在套接字中存储数据

Pat*_*tle 8 sockets node.js socket.io

我目前正在使用node.js和使用socket.io模块构建应用程序.当用户连接时,我将特定于用户的数据存储在其套接字上.例如

io.sockets.on('connection', function (socket) {

    socket.on('sendmessage', function (data, type) {

        socket.variable1 = 'some value';
        socket.variable2 = 'Another value';
        socket.variable3 = 'Yet another value';
    });
});
Run Code Online (Sandbox Code Playgroud)

虽然这有效但我的问题是,这是一个很好的方法.我有效地存储会话数据但是有更好的方法吗?

Kra*_*mir 4

我认为你应该将这些变量存储在另一种类型的对象中。保留套接字对象仅用于通信。您可以为每个用户生成唯一的 ID 并创建地图。像这样的东西:

var map = {},
numOfUsers = 0;

io.sockets.on('connection', function (socket) {
    numOfUsers += 1;
    var user = map["user" + numOfUsers] = {};
    socket.on('sendmessage', function (data, type) {
        user.variable1 = 'some value';
        user.variable2 = 'Another value';
        user.variable3 = 'Yet another value';
    });
});
Run Code Online (Sandbox Code Playgroud)

  • +1 并且存储“user.socket = socket”可能不是一个坏主意,这样您就可以通过知道其套接字来识别用户。 (3认同)