Duvida sobre socket e database

Estou criando um programa dashboard para monitoramento de dados em tempo real.

Minha duvida é: Eu envio os dados diretamente do servidor ate o cliente via socket ou envio uma “mensagem” do servidor para o cliente via socket e, quando o cliente receber, eu faço uma requisição ao banco de dados e pego o ultimo valor salvo desses dados?

No primeiro caso eu preciso de um array de objetos no servidor para enviar via socket. Consumindo assim memoria do servidor.

No segundo caso eu preciso enviar uma “mensagem” do servidor para o cliente e, dai sim, eu posso requisitar do cliente ate o banco de dados os ultimos valores salvos. Consumindo mais processamento do servidor do banco de dados.

Meu pensamento esta correto? E qual dos casos é uma melhor aplicação para dados em tempo real?

Obrigado desde já!

Se a ideia é retornar o último dado cadastrado, vc pode usar o RETURNING * após o insert, nem precisa de socket.

Mas em todo caso eu faço o seguinte

Cliente fez uma requisição, uma curtida por exemplo, eu retorno via json pra ele o resultado, que pode ser um true.

E aciono o socket pra notificar outros usuários.

Então seria

response.status(200).json(dado_do_banco)
request.io.emit(“curtida do fulano no post X”)


Resumindo, uma requisição acionando o socket

1 curtida

Entendo!
Então uma ação tem seu “retorno” e assim que recebe esse retorno acinamos o socket.

Boa solução, mas o debate fica aberto a mais respostas. Obrigado, Abner.

1 curtida

Consultas excessivas ao banco de dados pode ser custoso.
A primeira opção me parece mais adequada.

Ficará mais rapido tambem, porque voce tem um unico retorno e esse retorno será enviado para “N” clientes.

No seu segundo caso, digamos que tenham 1000 clientes, então serão 1000 consultas ao banco de dados, pessima ideia, mesmo porque um SGBD tem que lidar com muitas coisas.

Se for crescer a base de clientes, socket puro e simples tendo uma Thread para cada conexão, acaba consumindo muita memoria do lado servidor. Usando o java.nio canais não bloqueantes é incrivel como consome pouca memoria e suporta um numero enorme de conexoes simultaneas.