我有一个完全用PHP开发的应用程序,现在我想在我的应用程序中集成RTN(实时通知系统)。目前,我已经完成了在PHP使用此代码
呈现的页面之后连接到Node.jsSERVER:
var app = http.createServer(function(request,response)
{
response.writeHead(200,{"Content-Type":"text/plain"});
response.end();
}).listen(3000);
var io = require('socket.io').listen(3000);
客户端
<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost:3000');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
但现在感到困惑的是我如何获得客户请求的请求标头?实际上我想使用PHP进行开发和使用Node for RTN系统获取Client Cookie。现在因为我不知道如何让Request Header也无法获得cookie :(
更新我使用Memcache存储会话,这是我想获取cookie的主要原因,这样我就可以获得PHP的会话信息
答案 0 :(得分:2)
如果您想在Node.js中获取PHP会话ID,那么只需使用此
即可io.sockets.on("connection",function(client)
{
console.log(client.handshake.headers.cookie);
});
它将返回PHP会话ID。如果你没有使用上面提到的PHP页面和单独调用Node的方式,这可能会有所不同。上面命令的输出将是这样的
PHPSESSID=aj233jkjdfbk13adlljkwlkjjkj002
这是因为PHP设置了它的cookie并且你得到了headers.cookie,它返回了ID和PHP的会话ID。
答案 1 :(得分:0)
服务器生成的会话cookie具有“HTTPOnly”标志,您无法在客户端或任何其他服务器上读取它,您只能在原始服务器上读取它。客户端浏览器仅将会话cookie发送到原始服务器
因此,如果在PHP上使用mydomain.com并且您的Nodejs在mynode.com上,mynode.com将不会收到由mydomain.com生成的会话cookie
你需要在php和nodejs之间共享会话,看看这个: http://simplapi.wordpress.com/2012/04/13/php-and-node-js-session-share-redi/