Showing
1 changed file
with
35 additions
and
26 deletions
1 | -const db = require('./db.js'); | 1 | +//const db = require('./db.js'); |
2 | -const db_traffic = require('./db_traffic.js'); | 2 | +//const db_traffic = require('./db_traffic.js'); |
3 | +const db_total = require('./db_total.js'); //DB 합침 | ||
3 | const secret_key = require('../keys/api_option').key; | 4 | const secret_key = require('../keys/api_option').key; |
4 | const secret_key_traffic = require('../keys/api_option_traffic').key; | 5 | const secret_key_traffic = require('../keys/api_option_traffic').key; |
5 | 6 | ||
... | @@ -26,20 +27,20 @@ module.exports = (server, app) => { | ... | @@ -26,20 +27,20 @@ module.exports = (server, app) => { |
26 | let sending_to_client_info = {}; | 27 | let sending_to_client_info = {}; |
27 | let client_send = {}; | 28 | let client_send = {}; |
28 | let client_name = ""; | 29 | let client_name = ""; |
29 | - let client_birth ; | 30 | + let client_birth; |
30 | let Destiny; | 31 | let Destiny; |
31 | let sql; | 32 | let sql; |
32 | let info = {} //;? | 33 | let info = {} //;? |
33 | 34 | ||
34 | - let Current_TrafficAcc = {}; | 35 | + let Current_TrafficAcc = {}; |
35 | - let sql_traffic; | 36 | + //let sql_traffic; |
36 | - //let DeathNum_index = {}; //사상자 | 37 | + //let DeathNum_index = {}; //사망자 |
37 | //let M_HurtNum_index = {}; //중상자 | 38 | //let M_HurtNum_index = {}; //중상자 |
38 | //let L_HurtNum_index = {}; //경상자 | 39 | //let L_HurtNum_index = {}; //경상자 |
39 | //let LocalName_index = {}; //지역 이름 | 40 | //let LocalName_index = {}; //지역 이름 |
40 | //let OccurNum_index = {}; //발생 건수 | 41 | //let OccurNum_index = {}; //발생 건수 |
41 | //afos_fid: 다발지역 FID, bjd_cd: 법정동 코드, spot_cd:지점코드 | 42 | //afos_fid: 다발지역 FID, bjd_cd: 법정동 코드, spot_cd:지점코드 |
42 | - | 43 | + |
43 | //API 호출_Weather | 44 | //API 호출_Weather |
44 | const req_API = (when, what) => { | 45 | const req_API = (when, what) => { |
45 | //async await 사용하기 위하여 promise 사용 | 46 | //async await 사용하기 위하여 promise 사용 |
... | @@ -56,12 +57,14 @@ module.exports = (server, app) => { | ... | @@ -56,12 +57,14 @@ module.exports = (server, app) => { |
56 | 57 | ||
57 | // api의 response이 있을경우 promise resolve 호출 | 58 | // api의 response이 있을경우 promise resolve 호출 |
58 | if (api_res) { | 59 | if (api_res) { |
59 | - console.log("calling weather api"); | 60 | + console.log("calling weather & trafffic api"); |
60 | resolve(api_body); | 61 | resolve(api_body); |
61 | } | 62 | } |
62 | }); | 63 | }); |
63 | }) | 64 | }) |
64 | } | 65 | } |
66 | + | ||
67 | + | ||
65 | //API 호출_Traffic | 68 | //API 호출_Traffic |
66 | const req_API_traffic = (cate1, cate2) => { | 69 | const req_API_traffic = (cate1, cate2) => { |
67 | //async await 사용하기 위하여 promise 사용 | 70 | //async await 사용하기 위하여 promise 사용 |
... | @@ -121,7 +124,7 @@ module.exports = (server, app) => { | ... | @@ -121,7 +124,7 @@ module.exports = (server, app) => { |
121 | typhoon: Current_Weather.common.stormYn, //현재 태풍 | 124 | typhoon: Current_Weather.common.stormYn, //현재 태풍 |
122 | time: Current_Weather.weather.minutely[0].timeObservation, // 불러온 시각 | 125 | time: Current_Weather.weather.minutely[0].timeObservation, // 불러온 시각 |
123 | death_prob: 0, //확률 | 126 | death_prob: 0, //확률 |
124 | - death_number: Current_TrafficAcc.items.item[0].caslt_cnt, //사상자 수 | 127 | + death_number: Current_TrafficAcc.items.item[0].dth_dnv_cnt, //사망자 수 |
125 | midhurt_number: Current_TrafficAcc.items.item[0].se_dnv_cnt, //중상자 수 | 128 | midhurt_number: Current_TrafficAcc.items.item[0].se_dnv_cnt, //중상자 수 |
126 | lighthurt_number: Current_TrafficAcc.items.item[0].sl_dnv_cnt, //경상자 수 | 129 | lighthurt_number: Current_TrafficAcc.items.item[0].sl_dnv_cnt, //경상자 수 |
127 | occur_number: Current_TrafficAcc.items.item[0].occrrnc_cnt //발생건수 | 130 | occur_number: Current_TrafficAcc.items.item[0].occrrnc_cnt //발생건수 |
... | @@ -143,7 +146,8 @@ module.exports = (server, app) => { | ... | @@ -143,7 +146,8 @@ module.exports = (server, app) => { |
143 | //죽을 확률 계산(내맘대로 커스텀) | 146 | //죽을 확률 계산(내맘대로 커스텀) |
144 | info.death_prob = ( | 147 | info.death_prob = ( |
145 | (info.heat / 50) + (Math.abs(info.sensible_temperature - 15) / 10) + (info.discomport / 10) + (info.UV / 10) | 148 | (info.heat / 50) + (Math.abs(info.sensible_temperature - 15) / 10) + (info.discomport / 10) + (info.UV / 10) |
146 | - + info.windspd*1 + (info.rain / 10) + (Math.abs(info.current_temperature - 15) / 10) | 149 | + + info.windspd * 1 + (info.rain / 10) + (Math.abs(info.current_temperature - 15) / 10) |
150 | + + (info.death_number / 50) + (info.midhurt_number / 80) + (info.lighthurt_number / 90) + (info.occur_number / 90) | ||
147 | ); | 151 | ); |
148 | 152 | ||
149 | //이벤트 기반으로 일정 시간 간격으로 클라이언트에게 보낼 정보, 홈페이지 그래프에 나타날 정보 | 153 | //이벤트 기반으로 일정 시간 간격으로 클라이언트에게 보낼 정보, 홈페이지 그래프에 나타날 정보 |
... | @@ -160,19 +164,19 @@ module.exports = (server, app) => { | ... | @@ -160,19 +164,19 @@ module.exports = (server, app) => { |
160 | }; | 164 | }; |
161 | function getRandom_add_prob(min, max) { | 165 | function getRandom_add_prob(min, max) { |
162 | return Math.random() * (max - min) + min; | 166 | return Math.random() * (max - min) + min; |
163 | - } | 167 | + } |
164 | - | 168 | + |
169 | + | ||
170 | + // 심장이 크게 뛰며 확률이 증가하거나 감소 할 수 있음 | ||
171 | + Math.random() * 2 >= 1 ? client_send.death += getRandom_add_prob(0, 5) : client_send.death -= getRandom_add_prob(0, 5); | ||
165 | 172 | ||
166 | - // 심장이 크게 뛰며 확률이 증가하거나 감소 할 수 있음 | 173 | + |
167 | - Math.random() * 2 >= 1 ? client_send.death += getRandom_add_prob(0,5) : client_send.death -= getRandom_add_prob(0,5) ; | 174 | + //운명의 장난으로 죽을 확률이 증가하거나 감소함 |
168 | - | 175 | + const rand = Math.floor(Math.random() * 6) //생년월일 중 한자리 뽑음 |
169 | - | 176 | + |
170 | - //운명의 장난으로 죽을 확률이 증가하거나 감소함 | 177 | + Destiny = client_birth.charAt(rand) / 3; //명시적 형 변환 |
171 | - const rand = Math.floor(Math.random() * 6) //생년월일 중 한자리 뽑음 | 178 | + if (Destiny == 0) Destiny = 1; //사용자 잘못 입력했을때 예외처리 |
172 | - | 179 | + Math.random() * 2 >= 1 ? client_send.death += Destiny : client_send.death -= Destiny; |
173 | - Destiny=client_birth.charAt(rand)/3; //명시적 형 변환 | ||
174 | - if(Destiny==0)Destiny=1; //사용자 잘못 입력했을때 예외처리 | ||
175 | - Math.random() * 2 >= 1 ? client_send.death += Destiny : client_send.death -= Destiny ; | ||
176 | 180 | ||
177 | 181 | ||
178 | //만약 날이 너무 안좋아서 확률이 100을 넘긴다면 100으로 예외처리 | 182 | //만약 날이 너무 안좋아서 확률이 100을 넘긴다면 100으로 예외처리 |
... | @@ -180,13 +184,13 @@ module.exports = (server, app) => { | ... | @@ -180,13 +184,13 @@ module.exports = (server, app) => { |
180 | client_send.death = 100; | 184 | client_send.death = 100; |
181 | } | 185 | } |
182 | 186 | ||
183 | - console.log("client send data \n",client_send) | 187 | + console.log("client send data \n", client_send) |
184 | - | 188 | + |
185 | app.get("socket").emit("weather_and_traffic_Info_minutely_send_to_client", client_send); // 클라이언트에게 정보 담아서 이벤트 발산 | 189 | app.get("socket").emit("weather_and_traffic_Info_minutely_send_to_client", client_send); // 클라이언트에게 정보 담아서 이벤트 발산 |
186 | console.log("emit"); | 190 | console.log("emit"); |
187 | 191 | ||
188 | //db에 저장 | 192 | //db에 저장 |
189 | - sql = "INSERT INTO weatherInfo (time,wind,temperature,rain,prob) VALUES (?,?,?,?,?)"; | 193 | + /*sql = "INSERT INTO weatherInfo (time,wind,temperature,rain,prob) VALUES (?,?,?,?,?)"; |
190 | db.query(sql, [client_send.time, client_send.wind, client_send.temperature, client_send.rain, client_send.death], (err, result) => { | 194 | db.query(sql, [client_send.time, client_send.wind, client_send.temperature, client_send.rain, client_send.death], (err, result) => { |
191 | if (err) console.log(err); | 195 | if (err) console.log(err); |
192 | }) | 196 | }) |
... | @@ -194,7 +198,12 @@ module.exports = (server, app) => { | ... | @@ -194,7 +198,12 @@ module.exports = (server, app) => { |
194 | sql_traffic = "INSERT INTO trafficInfo (tdeath,mhurt,lhurt,occurence,prob) VALUES (?,?,?,?,?)"; | 198 | sql_traffic = "INSERT INTO trafficInfo (tdeath,mhurt,lhurt,occurence,prob) VALUES (?,?,?,?,?)"; |
195 | db_traffic.query(sql_traffic, [client_send.trafficdeath, client_send.mhurt, client_send.lhurt, client_send.occurence, client_send.death], (err, result) => { | 199 | db_traffic.query(sql_traffic, [client_send.trafficdeath, client_send.mhurt, client_send.lhurt, client_send.occurence, client_send.death], (err, result) => { |
196 | if (err) console.log(err); | 200 | if (err) console.log(err); |
201 | + })*/ | ||
202 | + sql = "INSERT INTO apisInfo (time,wind,temperature,rain,prob,tdeath,mhurt,lhurt,occurence) VALUES (?,?,?,?,?,?,?,?,?)"; | ||
203 | + db_total.query(sql, [client_send.time, client_send.wind, client_send.temperature, client_send.rain, client_send.death, client_send.trafficdeath, client_send.mhurt, client_send.lhurt, client_send.occurence], (err, result) => { | ||
204 | + if (err) console.log(err); | ||
197 | }) | 205 | }) |
206 | + | ||
198 | } catch (err) { //promise err or try err catch | 207 | } catch (err) { //promise err or try err catch |
199 | console.log("================Error Occured !!================\n", err); | 208 | console.log("================Error Occured !!================\n", err); |
200 | } | 209 | } |
... | @@ -205,7 +214,7 @@ module.exports = (server, app) => { | ... | @@ -205,7 +214,7 @@ module.exports = (server, app) => { |
205 | const Start_Interval = (second, CALL) => { | 214 | const Start_Interval = (second, CALL) => { |
206 | CALL(); //처음 불러올때 한번 호출하고 | 215 | CALL(); //처음 불러올때 한번 호출하고 |
207 | call_interval = setInterval(CALL, second * 1000); //그 후에 1분마다 호출 | 216 | call_interval = setInterval(CALL, second * 1000); //그 후에 1분마다 호출 |
208 | - } | 217 | + } |
209 | 218 | ||
210 | io.on('connection', (socket) => { //프론트와 소켓 연결시 이벤트 루프 동작 | 219 | io.on('connection', (socket) => { //프론트와 소켓 연결시 이벤트 루프 동작 |
211 | 220 | ... | ... |
-
Please register or login to post a comment