Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Web Socket - Atualização na hora de fazer o request.

Estou querendo reter o estado se o usuário está online ou não. Mas toda vida que atualizo a página, o estado se perde depois que uso o emit e recebo a mensagem. Alguém sabe como fazer? Sem salvar isso no banco de dados.

6 respostas

Acho que uma solução simples é guardar a informação no cookie.. isso sempre vai ser enviado, em cada uma das requisições :). Você pode receber no servidor e tratar da forma que quiser.

Mas e no caso de eu ter vários usuários, por exemplo? Gostaria de mostrar a lista de todos os usuários conectados sem precisar salvar e deletar no banco os usuários que estão se conectando e desconectando. Você tem alguma ideia?

solução!

Aí não tem muito jeito.. vc precisa ter uma variável com escopo de aplicação. Pode criar um vetor, deixar ele disponível no express, como fazemos com o objeto do socket.io e sempre dar push ou remove desse array.

Eu pelo menos não vejo outro jeito.. já que vc falou que usar o banco ta fora de cogitação :).

Valeu, Alberto. :)

Alberto, tentei fazer o seguinte:

var stateOfChannel = {};
module.exports.stateOfChannel = stateOfChannel;

A partir daí, eu teria um dicionário num módulo separado. Depois dou um require em outros arquivos pra dar o push e o delete. Mas o dicionário sempre está vazio em outros arquivos. Saberia explicar o pq?

Não acho que é uma boa tática... vc ta confiando que o require vai retornar sempre o mesmo objeto... Acho que o melhor é vc dar esse require no inicio da aplicação e deixar o objeto disponível no contexto do express.