31-12-2011, 02:39 PM
Autant pour moi je n'avais pas vu l'édit de ton post au dessus ! ^^
Ta solution marche aussi, mais je préfère qu'il lance le callback une fois le contenu reçu plutôt qu'avec un setInterval qui va m'imposer une latence d'1s ^^
Pour les sessions j'avais trouvé :
Mais il me dis que cookies est indéfini.
Ta solution si j'ai bien compris ressemblerait à :
socket.emit('callback', '<?php session_id(); ?>');
puis path: '/FUCORE/php/evenement.php?PHPSESSID=' + id,
?
Ta solution marche aussi, mais je préfère qu'il lance le callback une fois le contenu reçu plutôt qu'avec un setInterval qui va m'imposer une latence d'1s ^^
Pour les sessions j'avais trouvé :
Code :
/** File system library **/
var fs = require('fs');
/** Extract the session id from the headers cookies **/
function getPHPSessionId(cookies) {
var phpSessionId = '';
cookies.split(';').forEach(function(a) {
var b = a.split('=');
if(b[0].trim() == 'PHPSESSID') {
phpSessionId = b[1].trim();
}
});
return phpSessionId;
}
/**
* This function will look in the PHP Session directory and look for the session
* file. If the file exists it will load that file as a string and then parse
* that string for the PHP Session which will only be stored once the PHP authorization
* method saves it.
*/
function authorizePHPSession(phpSessionId, cb) {
try {
fs.readFile('../tmp/sess_'+phpSessionId, 'utf8', function(err, data) {
if(err) {
throw err;
}
if(data.search(phpSessionId.toString()) > -1) {
cb(null, true);
} else {
cb(null, false);
}
});
} catch(e) {
cb(null, false);
}
}
io.configure(function() {
io.set('transports', ['xhr-polling','htmlfile','jsonp-polling']);
io.set('authorization', function (data, cb) {
authorizePHPSession(getPHPSessionId(data.headers.cookie), cb);
});
});
Mais il me dis que cookies est indéfini.
Ta solution si j'ai bien compris ressemblerait à :
socket.emit('callback', '<?php session_id(); ?>');
puis path: '/FUCORE/php/evenement.php?PHPSESSID=' + id,
?