我想在服务器端的套接字上保存一些数据,所以每当客户端向服务器发出任何数据时,我都希望这些数据可用!
一个用例可以是在套接字上存储令牌。当客户端第一次连接时,它会发出令牌,如果有的话,或者它会显示登录页面,然后登录数据将被发送到服务器。无论是哪一个,我都想将令牌存储在服务器上,以便之后的每个请求都不需要指定令牌。
稍后,我将使用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));
});
});
这适用于我的场景,但是我不知道性能影响。