Werkt goed!
Echter als ik het script aanroep op www.mijnsite.nl:8082, moet hij eerst wachten totdat er data binnenstroomt vanuit de stroom, dus maximaal elke tien seconden wachten voordat de site zich laadt.
Kort gezegd:
Kan dit niet eenvoudig in het geheugen worden bewaard bij het aanroepen van het script in de browser, zodat ik altijd de laatste versie heb, zonder wachttijden? Ik lees veel over caching i.c.m. nodejs maar weet niet wat nou de beste oplossing voor dit geval is.
Andere oplossingen die ik bedacht heb:
- Elke 10 seconden opslaan als bestand lijkt me ook een overdreven
- Redis kan mogelijk ook om het te cachen, maar als het simpel kan is het mooi meegenomen.
var http = require('http');
var zlib = require("zlib");
var zmq = require('zmq')
, socket = zmq.socket('sub')
, endpoint = 'tcp://www.server.nl:8765';
// create webserver
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/xml'});
// Add the event handler before we connect
socket.on('message', function () {
msg = Array.prototype.slice.call(arguments)
address = msg[0].toString()
console.log(address)
var contents = Buffer.concat(msg.slice(1));
console.log(msg)
console.log(msg.slice(1))
console.log(contents)
// msg[1] i.p.v contents werkt wel
zlib.gunzip(contents, (err, buffer) => {
if (err) {
console.error(err);
return;
}
console.log(buffer.toString());
res.end(buffer.toString());
});
});
socket.connect(endpoint);
// subscribe to all of the messages
socket.subscribe('/RIG/NStreinpositiesInterface5');
//socket.setsockopt(zmq.ZMQ_SUBSCRIBE, new Buffer(''));
}).listen(8082);
[sub]Voor wie interesse heeft, de data komt bij het NDOV-loket vandaan![/sub]