我正在使用快速框架。我想从socket.io访问会话数据。我尝试使用client.listener.server.dynamicViewHelpers数据来表达dynamicHelpers,但无法获取会话数据。有没有简单的方法可以做到这一点?请看代码
app.listen(3000);
var io = require('socket.io');
var io = io.listen(app);
io.on('connection', function(client){
// I want to use session data here
client.on('message', function(message){
// or here
});
client.on('disconnect', function(){
// or here
});
});
这不适用于通过flashsocket传输的套接字(它不会向服务器发送所需的cookie),但可以可靠地用于其他所有事务。我只是在代码中禁用了flashsocket传输。
为了使其工作,在Express / Connect端,我明确定义了会话存储,以便可以在套接字内使用它:
MemoryStore = require('connect/middleware/session/memory'),
var session_store = new MemoryStore();
app.configure(function () {
app.use(express.session({ store: session_store }));
});
然后在我的套接字代码中,包含了connect框架,因此我可以使用其cookie解析来从cookie中检索connect.sid。然后,我在具有该connect.sid的会话存储中查找会话,如下所示:
var connect = require('connect');
io.on('connection', function(socket_client) {
var cookie_string = socket_client.request.headers.cookie;
var parsed_cookies = connect.utils.parseCookie(cookie_string);
var connect_sid = parsed_cookies['connect.sid'];
if (connect_sid) {
session_store.get(connect_sid, function (error, session) {
//HOORAY NOW YOU'VE GOT THE SESSION OBJECT!!!!
});
}
});
然后,您可以根据需要使用会话。
我最近开始学习node.js和socket.io。我遵循了socket.io的一个简单教程,它在我的电脑上运行时一切正常。然而,我决定将客户端上传到服务器进行测试,这就是问题的开始。我想在web主机上运行聊天客户端,在我的计算机或其他主机上运行服务器。基本上,我计划对服务器进行端口转发,并让客户机在网页上运行。我打开我的端口到端口转发,它似乎是工作的,但是我每次都在网页上得到错误。 我一直在弄乱代
我正在使用CloudFlare实现一个REST API。我需要添加一些在node.js上用socket.io实现的通知。当socket.io使用活动连接来保持客户机更新时,它将工作,因为连接是在服务器-客户机之间建立的,但是当socket.io进行轮询时会发生什么呢?CloudFlare是否总是为每个客户机使用相同的服务器?
问题内容: 如何与Socket.io 1.0和Express 4.x共享会话?我使用Redis商店,但我认为这没有关系。我知道我必须使用中间件来查看cookie和获取会话,但是不知道如何。我搜索了但找不到任何工作 问题答案: 解决方案非常简单。它只是没有很好的记录。也可以通过如下所示的小型适配器将快速会话中间件用作Socket.IO中间件: 这是Express 4.x,Socket.IO 1.x和
问题内容: 所以我试图让Session在我的socket.on(’connection’,…)内部工作,我试图使用最新版本进行工作:Socket.io-0.9.13,Express-3.1.0和最新版本其他模块。 无论如何,我都尝试过使用两个模块’ connect-redis ‘和’ session.socket.io ‘,它们都有类似的问题。 在我的代码中,我有2个redis存储(socketi
问题内容: 我一直在学习redis和node.js。我有两个问题,找不到令人满意的答案。 我的第一个问题是关于在node.js中重用Redis客户端。我找到了这个问题和答案:如何在socket.io中重用Redis连接,但还不足以让我满意。 现在,如果我在连接事件中创建redis客户端,它将为每个连接生成。因此,如果我有2万个并发用户,那么将有2万个Redis客户端。 如果我将其放在连接事件之外,