[英]How to get same request headers for PHP and NodeJS
我正在使用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)
谢谢你的帮助
由于您已经在使用Redis,因此您也可以使用它在应用程序的PHP和Node.js部分之间共享会话信息。 您将需要在Node.js中使用例如cookie
模块来检索PHP会话信息。
这里给出了带有代码示例的更详细的答案:
https://simplapi.wordpress.com/2012/04/13/php-and-node-js-session-share-redi/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.