我正在开发PHP + NodeJS中的应用程序(它们之间的通信是由REDIS pub / sub)。大多数代码都是用PHP编写的,NodeJS是在后台运行的,用于某些任务 我不知道将PHP + NodeJS用于此类事情是否是个好主意,但我想要这样的事情:
用户打开一个网站,此时Node.js正在检查用户是否已登录。如果是这样,它从数据库中抓取一些东西(REDIS),让它称之为'模式'并将其存储在临时散列/列表中。 然后其他用户发布看起来像问题的东西。此问题由pub / sub发送到NodeJS,Node正在检查该问题是否与任何活动模式(临时散列/列表中的模式)匹配。
这是一个我无法弄清楚的问题
我无法在NodeJS中获得PHPSESSID
我试过了:
var app = express();
var server = app.listen(3001);
var io = socket.listen( server );
// #1
io.sockets.on('connection', function(socket){
console.log('New user!');
// Here I want to check if user is logged by checking PHPSESSID
console.log(socket.request.headers.cookie); // <-- this one doesn't return PHPSESSID (It's return only io cookie)
});
// #2
io.set('authorization', function (handshakeData, callback) {
var cookie = handshakeData.headers.cookie;
console.log(cookie); // <--- doens't return PHPSESSID (It's return only io cookie)
callback(null, true);
});
// #3
var options = {method: 'GET', host: 'my-app.com', port: 80, path: '/'};
var req = http.request(options, function(res) {
console.log(JSON.stringify(res.headers));
// PHPSESSID is different then PHPSESSID in browser
}
);
req.end();
有什么方法可以获得包含PHPSESSID的当前请求标头?或者有没有办法并行运行PHP和Node?所以我可以在PHP和NodeJS中获得相同的HTTP请求? (我使用Nginx)
感谢您的帮助
答案 0 :(得分:0)
由于您已经在使用Redis,因此您也可以使用它来共享应用程序的PHP和Node.js部分之间的会话信息。您需要在Node.js中使用例如cookie
模块来检索PHP会话信息。
此处给出了代码示例的更详细答案:
https://simplapi.wordpress.com/2012/04/13/php-and-node-js-session-share-redi/