Mostrar datos de ficheros en servidor Node.js

perez_chuck

Buenas,

uso un servidor node.js, y quiero mostrar información dinámicamente en el cliente, la cual varía en función del tiempo.

Según he podido ver, podría hacerlo desde nodejs antes de mandarlo, o después con ajax.

tocho

Sugerencias?

litoss

No lo he entendido muy bien, si pudieras elaborarlo un poco con un ejemplo estaría mejor.

De todas formas si lo que necesitas es conexión continua entre el servidor y los clientes usa socket.io

1 respuesta
perez_chuck

#2 No conexión continua, sino un servidor web, que cargue las páginas con la información de los registradores.

En el servidor, por cada registrador conectado, hay una carpeta.
En cada carpeta, se guarda un fichero con los datos recogidos por cada sensor.
El usuario vería estos datos en una gráfica hecha en js, que según he visto solo sería cargar estos valores en arrays.

-Data:
---Registrador1:
------Sensor1.txt
------Sensor2.txt
---Registrador2:
------Sensor1.txt

Para mostrar el "sistema de archivos", había pensado en un desplegable para los registradores, y un cuadro de selección para los sensores. De manera que al seleccionar un registrador del desplegable, saliera al lado los sensores con información.
He conseguido crear un script en nodejs que crea un fichero de texto con el nombre de cada registrador. Por lo que de alguna manera tendría que cargar esa información en la web.

Además, hay una página para configurar los sensores. Esta información llega al registrador mediante un mensaje UDP.

El problema que tengo es que no sé muy bien como crear las páginas web finales, o cuál sería la mejor manera.
Si usando nodejs para crear el html y mandarlo, o mandar las páginas y que estas soliciten info mediante ajax al servidor.
De cualquier manera lo único que sé de js es lo que llevo estos días leyendo.

Edit: supongo que con php se pueda hacer fácilmente y crear los html antes de ser enviados, pero quería probar js ya que uso nodejs y tal.

1 respuesta
litoss

#3 Entonces simplemente necesitas una llamada en el servidor( get /registrador/:idRegistrador ) que devuelva el fichero(con el modulo fs puedes hacerlo, luego tienes el fs-extra que tiene algunas cosas mas).

Luego en el cliente con ajax si quieres haces la llamada y manipulas el dom con los datos que te devuelve.

1 respuesta
perez_chuck

#4 Gracias ;)

Podrías explicarlo mejor? Piensa que sé prácticamente 0 respecto a esto, y me cuesta pensar aún en modo servidor.

1 respuesta
litoss

#5 Supongo que estarás utilizando Express (En caso contrario te recomiendo que le eches un vistazo y lo uses).
También te recomendaría que almacenaras los datos en formato json.
La llamada en particular seria algo asi:

app.get('/registradores/:registradorId' ,function(req,res){
	res.sendfile(__dirname + "/" + req.params.registradorId + "/sensor.json");
});

Desde el cliente simplemente harías un ajax a URLdelservidor/registradores/Registrador1 y en la respuesta obtendrías lo que hay dentro del sensor.json de ese Registrador1.

Quizás alguien más experto te puede dar una solucion mejor pero eso es lo que se me ocurre a mi.

PD: Si andas un poco perdido no estaria de más que vieras este tutorial para entender un poco como funciona el tema de express.
https://scotch.io/tutorials/build-a-restful-api-using-node-and-express-4

1

Usuarios habituales

  • litoss
  • perez_chuck