Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ronisonrodrigues

Session do PHP no Node.JS

Recommended Posts

Então galera, eu sou novo no Node.JS e to com uma dificuldade

No servidor Apache eu preciso que o PHP busque informações no banco de dados MySQL em tempo real, e pesquisando bastante todo mundo fala que é melhor usar o Node.JS pra fazer essa aplicação em tempo real.

 

Eu consegui obter informações em tempo real do banco de dados MySQL, maaaaas eu não sei como buscar essas informações usando o ID do usuário que está na session que foi criada pelo PHP.

Eu não faço a minima ideia de como pegar a session do localhost:80 ( o servidor Apache ) no localhost:3000 ( o servidor Node.JS ) pra poder buscar as informações para esse usuário.

 

Alguém ai sabe como eu posso fazer isso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use tokens. Envie junto do GET ou no cabeçalho da requisição.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use tokens. Envie junto do GET ou no cabeçalho da requisição.

Então eu devo criar o Token na hora da autenticação com o PHP e no Node.JS eu pego a informação que ta contida nele ? Ou eu envio via GET o ID do usuário e crio o Token diretamente no Node ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tanto faz.. onde vai ser a estratégia de criação do token é indiferente, desde que você entenda a idéia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tanto faz.. onde vai ser a estratégia de criação do token é indiferente, desde que você entenda a idéia.

Ahhh ok, obrigado pela dica, William!

 

eu vou colocar aqui o codigo em node que eu estou usando para buscar as informações no banco em tempo real, você pode me dizer o que acha dele ? Se é bom ou pode atrapalhar meu servidor e tudo mais

var app                 = require('http').createServer(handler),
    io                  = require('socket.io').listen(app),
    fs                  = require('fs'),
    mysql               = require('mysql'),
    connectionsArray    = [],
    connection          = mysql.createConnection({
        host        : 'localhost',
        user        : 'root',
        password    : '',
        database    : 'node',
        port        : 3306
    }),
    POLLING_INTERVAL = 3000,
    pollingTimer;

// If there is an error connecting to the database
connection.connect(function(err) {
  // connected! (unless `err` is set)
  console.log( err );
});

// create a new nodejs server ( localhost:3000 )
app.listen(3000);

// on server ready we can load our client.html page
function handler ( req, res ) {
    fs.readFile( __dirname + '/index.html' , function ( err, data ) {
        if ( err ) {
            console.log( err );
            res.writeHead(500);
            return res.end( 'Error loading client.html' );
        }
        res.writeHead( 200 );
        res.end( data );
    });
}

/*
*
* HERE IT IS THE COOL PART
* This function loops on itself since there are sockets connected to the page
* sending the result of the database query after a constant interval
*
*/
var pollingLoop = function () {
    
    // Make the database query
    var query = connection.query('SELECT * FROM users'),
        users = []; // this array will contain the result of our db query


    // set up the query listeners
    query
    .on('error', function(err) {
        // Handle error, and 'end' event will be emitted after this as well
        console.log( err );
        updateSockets( err );
        
    })
    .on('result', function( user ) {
        // it fills our array looping on each user row inside the db
        users.push( user );
    })
    .on('end',function(){
        // loop on itself only if there are sockets still connected
        if(connectionsArray.length) {
            pollingTimer = setTimeout( pollingLoop, POLLING_INTERVAL );

            updateSockets({users:users});
        }
    });

};

// create a new websocket connection to keep the content updated without any AJAX request
io.sockets.on( 'connection', function ( socket ) {
    
    console.log('Numero de conexoes:' + connectionsArray.length);
    // start the polling loop only if at least there is one user connected
    if (!connectionsArray.length) {
        pollingLoop();
    }
    
    socket.on('disconnect', function () {
        var socketIndex = connectionsArray.indexOf( socket );
        console.log('socket = ' + socketIndex + ' disconnected');
        if (socketIndex >= 0) {
            connectionsArray.splice( socketIndex, 1 );
        }
    });

    console.log( 'Novo Socket conectado!' );
    connectionsArray.push( socket );
    
});

var updateSockets = function ( data ) {
    // store the time of the latest update
    data.time = new Date();
    // send new data to all the sockets connected
    connectionsArray.forEach(function( tmpSocket ){
        tmpSocket.volatile.emit( 'notification' , data );
    });
};

( Só ta faltando eu fazer as alterações pra ele poder pegar o ID do usuário e buscar as coisas que eu preciso em outra tabela )

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.