Я хочу транслировать события в localhost / czml, который прекрасно работает в консоли или в окне запроса на получение. Но я не могу передать эти переменные на страницу, потому что req.query всегда оказывается неопределенным
Я кровавый новичок в программировании, и большую часть времени я понятия не имею, что я делаю (вот почему код такой плохой ...). Я получил этот код методом проб и ошибок и в основном путем копирования откуда-то
var express = require('express'),
fs = require('fs'),
morgan = require('morgan'),
path = require('path'),
os = require('os'),
http = require('http');
const app = express();
const EventEmitter = require('events');
const stream = new EventEmitter();
var czmlstream = fs.createWriteStream('czml.czml',{flags: 'a'});
app.get('/czml', function (req, res, next) {
//don't log favicon
if (req.url === '/favicon.ico'){
res.end();
return;
}
//only log GET and set to stream
if (req.method === 'GET' ) {
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive'
});
function createCzml() {
//get the query value from the request
var id = req.query.id;
var lon = parseInt(req.query.lon);
var lat = parseInt(req.query.lat);
var alt = parseInt(req.query.alt);
// custom json format for czml file
var entity = {
"id": id,
"position": {
"cartographicDegrees": [lat, lon, alt]
},
"point": {
"color" : {"rgba": [0,0,255,255]},
"pixelSize": 20
}
};
return entity;
}
//first 2 lines for the event stream
res.write('event: czml\n');
res.write('data:' + JSON.stringify({ "id":"document", "version":"1.0" })+
'\n\n');
//always tells me that 10 listeners are added .... ?
stream.setMaxListeners(0);
//stream.on(req) = emit event on get request?
stream.on('req', function() {
res.write('event: czml\n');
res.write('data:' +JSON.stringify(createCzml)+ '\n\n'); //this
doesn't work
});
//not sure why this is needed
stream.emit('req');
}else{
res.WriteHead(405, {'Content-Type': 'text/plain'});
res.end('No GET Request - not allowed');
}
//morgan(format, {stream: czmlstream})(req,res,next);
}).listen(8000);
console.log('Server running');
Чего я хочу достичь:
кто-то отправляет запрос get на localhost / czml /? id = 1 & lon = -40 & lat = 30 & alt = 5000 => эти запросы анализируются и отправляются на localhost / что угодно как поток событий в формате:
событие: czml
данные: {json}
Я почти на месте (даже если код плохой) - это только последняя часть, где я должен написать эти надоедливые запросы в localhost / что угодно. Прямо сейчас он регистрирует все нормально в консоли, но undefined записывается в localhost / what ... ... 1010 *
Буду очень признателен, если вы укажете мне правильное направление - имейте в виду, что мне нужны простые и хорошие объяснения;)