在Socket.IO中将数据保存在套接字上

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Socket.IO中将数据保存在套接字上相关的知识,希望对你有一定的参考价值。

我想在套接字,服务器端保存一些数据,所以每当客户端向服务器发送任何数据时,我希望这些数据可用!

一个用例可以是在套接字上存储令牌。当客户端第一次连接时,它将发出令牌(如果有),或者它将显示登录页面,然后登录数据将被发送到服务器。无论它是哪一个,我都希望将令牌存储在服务器上,以便之后的每个请求都不需要指定令牌。

稍后,我将使用RedisStore,因此所有运行应用程序的服务器都可以访问所有数据。

我唯一的问题是,我在哪里将数据存储在套接字上,以便它与该客户端相关联?

答案

http://socket.io/#how-to-use上滚动到:存储与客户端关联的数据

使用socket.set和socket.get来异步设置和获取数据

另一答案

当您不想使用任何数据库时,可以将数据保存在全局变量中

var globalVariable = {};

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

    socket.on("save-client-data", function (clientData) {
          var clientId = clientData.clientId;
          globalVariable[clientId] = JSON.parse(clientHandshakeData);
    });

    socket.on("get-client-data", function (clientId) {

          var clientData =  globalVariable[clientId];
          socket.emit("get-client-data", JSON.stringify(clientData));

    });

});

这适用于我的场景,但我不知道性能影响。

以上是关于在Socket.IO中将数据保存在套接字上的主要内容,如果未能解决你的问题,请参考以下文章

在 ExpressJS 中将 socket.io 实现为子模块的最佳方法是啥?

在nodeJs中将pm2与socket io集成[关闭]

在“连接”上使用 socket.io 服务器持久化数据

Express Route & Socket io

使用 angularjs 和 socket.io 实时保存和显示评论

使用Socket.IO以及Express和NodeJS导出