如何为PHP和NodeJS获取相同的请求标头

时间:2015-06-18 10:07:23

标签: php node.js nginx

我正在开发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)

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

由于您已经在使用Redis,因此您也可以使用它来共享应用程序的PHP和Node.js部分之间的会话信息。您需要在Node.js中使用例如cookie模块来检索PHP会话信息。

此处给出了代码示例的更详细答案:

https://simplapi.wordpress.com/2012/04/13/php-and-node-js-session-share-redi/