root / HServer / CMS / app.js @ 24
이력 | 보기 | 이력해설 | 다운로드 (5.67 KB)
1 | 24 | HKM | |
---|---|---|---|
2 | /* TODO LIST
|
||
3 | 1. UDP 부분
|
||
4 | 1) UDP 에서 연결된 장치 전체에 신호 던져주기.
|
||
5 | 2) 던져 주는 신호 등록해 둬서 서버에서 언제든지 호출 할 수 있게 해주기.
|
||
6 | 3) 주기적으로 던져주기.
|
||
7 | 4) 웹에서는 연결된 것들 다 찾아노는 이벤트 만들어두기
|
||
8 | 5) 클라에서는 정보 요청 하는 것들 찾아보기
|
||
9 | |||
10 | 2. FTP 부분
|
||
11 | */
|
||
12 | |||
13 | var express = require('express'); |
||
14 | var http = require('http'); |
||
15 | var static = require('serve-static'); |
||
16 | var path = require('path'); |
||
17 | |||
18 | var bodyParser = require('body-parser'); |
||
19 | var cookieParser = require('cookie-parser'); |
||
20 | var expressSession = require('express-session'); |
||
21 | |||
22 | var expressErrorHandler = require('express-error-handler'); |
||
23 | |||
24 | // 파일 읽기 쓰기
|
||
25 | var multer = require('multer'); |
||
26 | var fs = require('fs'); |
||
27 | |||
28 | // 다중 서버 접속 지원
|
||
29 | var cors = require('cors'); |
||
30 | |||
31 | var database;
|
||
32 | var UserSchema;
|
||
33 | var UserModel;
|
||
34 | |||
35 | // mongoose 접속과 schema 에 관련된 내용이 있다.
|
||
36 | var dbCenter = require('./dbCenter'); |
||
37 | |||
38 | |||
39 | var app = express();
|
||
40 | |||
41 | app.set('port', process.env.PORT || 3000); |
||
42 | |||
43 | // public 폴더 오픈
|
||
44 | app.use('/public', static(path.join(__dirname,'public'))); |
||
45 | |||
46 | // upload 폴더 오픈
|
||
47 | app.use('/uploads', static(path.join(__dirname, 'uploads'))); |
||
48 | |||
49 | app.use(bodyParser.urlencoded({ extended: true })); |
||
50 | //app.use(bodyParser.urlencoded({extended:false}));
|
||
51 | app.use(bodyParser.json()); |
||
52 | |||
53 | app.use(cookieParser()); |
||
54 | app.use(expressSession({ |
||
55 | secret:'my key', |
||
56 | resave:true, |
||
57 | saveUninitialized:true |
||
58 | })); |
||
59 | |||
60 | // 클라이언트에서 ajax로 요청했을 때 cors(다중 서버 접속)지원
|
||
61 | app.use(cors()); |
||
62 | |||
63 | // multer 미들웨어 사용 : 미들웨어 사용 순서 중요 body-parser -> multer -> router
|
||
64 | // 파일 제한 10개 , 1G
|
||
65 | var storage = multer.diskStorage({
|
||
66 | destination: function(req, file, callback){ |
||
67 | // uploads 폴더로 destination 을 정해준다.
|
||
68 | callback(null, 'uploads'); |
||
69 | }, |
||
70 | filename: function (req, file, callback){ |
||
71 | //callback(null, file.originalname + Date.now() + '.png')
|
||
72 | |||
73 | var extension = path.extname(file.originalname);
|
||
74 | var basename = path.basename(file.originalname, extension);
|
||
75 | |||
76 | callback(null, basename + Date.now() + extension);
|
||
77 | } |
||
78 | }); |
||
79 | |||
80 | var upload = multer({
|
||
81 | storage: storage,
|
||
82 | limits: {
|
||
83 | // 한번에 업로드 할 수 있는 최대 파일 갯수
|
||
84 | files: 10, |
||
85 | // 한버넹 업로드 할 수 있는 최대 파일 용량
|
||
86 | rileSize: 1024*1024*1024 |
||
87 | } |
||
88 | }); |
||
89 | |||
90 | // 이 코드 아래로 부터 라우터 등록
|
||
91 | var router = express.Router();
|
||
92 | |||
93 | // ▼ DB 접속 관련 함수 ▼////////////////////////////////////////////////////////////////////
|
||
94 | // ▲ DB 접속 관련 함수 ▲////////////////////////////////////////////////////////////////////
|
||
95 | |||
96 | |||
97 | |||
98 | // DB Create 요청
|
||
99 | router.route('/DB/Create').post(function(req, res){ |
||
100 | console.log('/DB/Create : call');
|
||
101 | dbCenter.createDB(req.body, function(err){
|
||
102 | if( err ){
|
||
103 | var resultString = err.toString();
|
||
104 | console.log(resultString); |
||
105 | res.send({'result':resultString});
|
||
106 | res.end(); |
||
107 | } else {
|
||
108 | console.log('DB/Create : Success');
|
||
109 | res.send({'result':resultString});
|
||
110 | res.end(); |
||
111 | } |
||
112 | }); |
||
113 | }); |
||
114 | |||
115 | |||
116 | |||
117 | // ▼ 클라이언트에 대한 것들 ▼////////////////////////////////////////////////////////////////////
|
||
118 | // 연결된 모든 클라이언트를 가져올 것이다.
|
||
119 | router.route('/clients').post(function(req, res){ |
||
120 | dbCenter.data_All(function(err, users){
|
||
121 | if(err){
|
||
122 | |||
123 | } else {
|
||
124 | res.send(users); |
||
125 | res.end(); |
||
126 | } |
||
127 | }); |
||
128 | }); |
||
129 | |||
130 | // Client 에서 udp를 받게되면 post로 쏴준다.
|
||
131 | router.route('/clients/attendance').post(function(req, res){ |
||
132 | //console.dir(req);
|
||
133 | dbCenter.data_Set(req, function(err){
|
||
134 | if(err){
|
||
135 | res.json({"result":'fail'}); |
||
136 | res.end(); |
||
137 | } else {
|
||
138 | // 페이지에 새로고침을 요청하는 명령어를 날린다.
|
||
139 | io.emit('test');
|
||
140 | |||
141 | res.json({"result":'success'}); |
||
142 | res.end(); |
||
143 | } |
||
144 | }); |
||
145 | }); |
||
146 | // ▲ 클라이언트에 대한 것들 ▲////////////////////////////////////////////////////////////////////
|
||
147 | |||
148 | app.use('/',router);
|
||
149 | |||
150 | var errorHandler = expressErrorHandler({
|
||
151 | static: {
|
||
152 | '404':'./public/404.html' |
||
153 | } |
||
154 | }); |
||
155 | |||
156 | app.use(expressErrorHandler.httpError(404));
|
||
157 | app.use(errorHandler); |
||
158 | |||
159 | |||
160 | var udpMulticast = require('./udpMulticast'); |
||
161 | |||
162 | // 비동기 함수로 udp 멀티캐스트 주기적으로 전송
|
||
163 | // ms 단위로 재 전송 시간 설정
|
||
164 | var reSendTime = 1000; |
||
165 | |||
166 | let asyncUdpSend = (massage)=> new Promise((resolve)=>{
|
||
167 | setTimeout(()=>{ |
||
168 | console.log(massage); |
||
169 | udpMulticast.send(); |
||
170 | resolve(asyncUdpSend(massage)); |
||
171 | }, reSendTime) ; |
||
172 | }); |
||
173 | |||
174 | async function asyncMain(){ |
||
175 | asyncUdpSend('upd send');
|
||
176 | }; |
||
177 | |||
178 | // http 웹 서버를 실행 합니다.
|
||
179 | var server = http.createServer(app).listen(app.get('port'), function(){ |
||
180 | console.log('웹 서버가 실행 되었습니다. ( 포트 : ' + app.get('port') + ')'); |
||
181 | |||
182 | dbCenter.db_Connect(function(err){
|
||
183 | if(err){
|
||
184 | |||
185 | } else {
|
||
186 | |||
187 | } |
||
188 | }); |
||
189 | }); |
||
190 | |||
191 | |||
192 | // socket.io 사용
|
||
193 | var io = require('socket.io')(server); |
||
194 | |||
195 | var connectPage;
|
||
196 | |||
197 | io.on('connection', function(client){ |
||
198 | console.log('없는 장치를 검색하는 페이지에 접근함.');
|
||
199 | connectPage = client; |
||
200 | //client.emit('test',);
|
||
201 | |||
202 | io.emit('test');
|
||
203 | //client.on('event', function(data){});
|
||
204 | //client.on('disconnect', function(){});
|
||
205 | }); |
||
206 | |||
207 |