안녕하세요
현재 개인적으로 cctv 관제할수있는 오픈소스를 활용해서
간단한 웹서버를 만들어보고있는데 nodejs에 문외한이라 질문 드립니다..ㅠㅠ
오픈소스가 하드코딩되어있는 문제가 있는 상태입니다.
/**
* Created by Andrew D.Laptev<a.d.laptev@gmail.com> on 30.03.15.
*/
const app = require('express')()
, server = require('http').Server(app)
, io = require('socket.io')(server)
, rtsp = require('../lib/rtsp-ffmpeg')
;
// use rtsp = require('rtsp-ffmpeg') instead if you have install the package
server.listen(6147, function(){
console.log('Listening on localhost:6147');
});
var cams = [
'rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov'
, 'rtsp://freja.hiof.no:1935/rtplive/definst/hessdalen03.stream'
, 'udp://localhost:1234'
].map(function(uri, i) {
var stream = new rtsp.FFMpeg({input: uri, resolution: '320x240', quality: 3});
stream.on('start', function() {
console.log('stream ' + i + ' started');
});
stream.on('stop', function() {
console.log('stream ' + i + ' stopped');
});
return stream;
});
cams.forEach(function(camStream, i) {
var ns = io.of('/cam' + i);
ns.on('connection', function(wsocket) {
console.log('connected to /cam' + i);
var pipeStream = function(data) {
wsocket.emit('data', data);
};
camStream.on('data', pipeStream);
wsocket.on('disconnect', function() {
console.log('disconnected from /cam' + i);
camStream.removeListener('data', pipeStream);
});
});
});
io.on('connection', function(socket) {
socket.emit('start', cams.length);
});
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
위 코드의 동작은
var cams = [ ~~~~~~~~ ]
cams 배열안에있는 cctv 주소 목록들을 읽어서 실시간 스트리밍 오픈소스를 거쳐,
server.listen()을 통해 실행이 됩니다.
근데 저 var cams 안 배열에 적힌 cctv 연결 주소들은 하드코딩이되어있고,
저는 웹페이지에서 자유롭게 새로운 cctv 주소를 추가하면 cams 배열에 insert되게 하고 싶은 상황이에요..
그래서 유동적인 cctv 목록 추가를 위해 DB에 cctv 목록들을 저장해놓고
임시로 html 페이지에 박스 안에 cctv 주소를 입력하여 버튼을 누르면 DB에 저장되게끔 구현을 해 놓은 상황입니다.
DB에 저장된 cctv 목록들을 읽어온 후, cams 배열에 insert 한 후
서버를 실행되게 하고싶으나 자바의 비동기성때문에 cams = [ ] 가 텅 비어있는 상태로 서버가 열리게 되더라구요..
DB에 connection해서
conn.query( sql문 ~) 으로 정보를 읽어와도
전역변수로 선언된 var cams = ''에 insert 하려해도 비동기성때문에 텅빈 상태로 서버가 열립니다.
도움 주시면 정말 감사하겠습니다 ..