Allereerst ben ik geen held met NodeJS, maar ik heb dit al met wat trial and error bij elkaar kunnen klussen:
var http = require('http');
var zlib = require("zlib");
var zmq = require('zmq')
, socket = zmq.socket('sub')
, endpoint = 'tcp://pubsub.besteffort.ndovloket.nl:7664';
// create webserver
http.createServer(function (req, res) {
// 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());
});
});
socket.connect(endpoint);
// subscribe to all of the messages
socket.subscribe('/RIG/NStreinpositiesInterface5');
//socket.setsockopt(zmq.ZMQ_SUBSCRIBE, new Buffer(''));
}).listen(8082);
Maar, wat mij opvalt? Hij maakt geen webserver aan met alle data binnenstroomt?
Mis ik iets? Zie ik iets over het hoofd?
(PS: Doe geen moeite om het uit te testen, want de hostname van de aanbieder heeft een white-list
)
Edit:
Ik miste dus
   res.end(buffer.toString())
in de zlib.gunzip { }
Misschien dat iemand nog idëeen heeft om dit beter te kunnen?
var http = require('http');
var zlib = require("zlib");
var zmq = require('zmq')
, socket = zmq.socket('sub')
, endpoint = 'tcp://pubsub.besteffort.ndovloket.nl:7664';
// create webserver
http.createServer(function (req, res) {
// 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());
});
});
socket.connect(endpoint);
// subscribe to all of the messages
socket.subscribe('/RIG/NStreinpositiesInterface5');
//socket.setsockopt(zmq.ZMQ_SUBSCRIBE, new Buffer(''));
}).listen(8082);
Maar, wat mij opvalt? Hij maakt geen webserver aan met alle data binnenstroomt?
Mis ik iets? Zie ik iets over het hoofd?
(PS: Doe geen moeite om het uit te testen, want de hostname van de aanbieder heeft een white-list
)Edit:
Ik miste dus
   res.end(buffer.toString())
in de zlib.gunzip { }
Misschien dat iemand nog idëeen heeft om dit beter te kunnen?