sfs*_*sfs 95 session node.js express
我正在使用快递框架.我想从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
});
});
Run Code Online (Sandbox Code Playgroud)
小智 68
这不适用于通过flashsocket传输的套接字(它不会向服务器发送所需的cookie)但它可以可靠地用于其他所有事情.我只是在我的代码中禁用flashsocket传输.
为了使它工作,在快速/连接方面,我明确定义会话存储,以便我可以在套接字内使用它:
MemoryStore = require('connect/middleware/session/memory'),
var session_store = new MemoryStore();
app.configure(function () {
app.use(express.session({ store: session_store }));
});
Run Code Online (Sandbox Code Playgroud)
然后在我的套接字代码中,我包含了连接框架,因此我可以使用它的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!!!!
});
}
});
Run Code Online (Sandbox Code Playgroud)
然后,您可以根据需要使用会话.
我建议不要完全重新发明轮子.你需要的工具已经是一个npm包.我认为这就是你需要的:session.socket.io 我这些天使用它,它会非常有用我想!将express-session链接到socket.io层将具有很多优势!
| 归档时间: |
|
| 查看次数: |
84888 次 |
| 最近记录: |