김주희

socketio.js db 하나로 통합

const db = require('./db.js');
const db_traffic = require('./db_traffic.js');
//const db = require('./db.js');
//const db_traffic = require('./db_traffic.js');
const db_total = require('./db_total.js'); //DB 합침
const secret_key = require('../keys/api_option').key;
const secret_key_traffic = require('../keys/api_option_traffic').key;
......@@ -26,14 +27,14 @@ module.exports = (server, app) => {
let sending_to_client_info = {};
let client_send = {};
let client_name = "";
let client_birth ;
let client_birth;
let Destiny;
let sql;
let info = {} //;?
let Current_TrafficAcc = {};
let sql_traffic;
//let DeathNum_index = {}; //사
//let sql_traffic;
//let DeathNum_index = {}; //사
//let M_HurtNum_index = {}; //중상자
//let L_HurtNum_index = {}; //경상자
//let LocalName_index = {}; //지역 이름
......@@ -56,12 +57,14 @@ module.exports = (server, app) => {
// api의 response이 있을경우 promise resolve 호출
if (api_res) {
console.log("calling weather api");
console.log("calling weather & trafffic api");
resolve(api_body);
}
});
})
}
//API 호출_Traffic
const req_API_traffic = (cate1, cate2) => {
//async await 사용하기 위하여 promise 사용
......@@ -121,7 +124,7 @@ module.exports = (server, app) => {
typhoon: Current_Weather.common.stormYn, //현재 태풍
time: Current_Weather.weather.minutely[0].timeObservation, // 불러온 시각
death_prob: 0, //확률
death_number: Current_TrafficAcc.items.item[0].caslt_cnt, //사상자 수
death_number: Current_TrafficAcc.items.item[0].dth_dnv_cnt, //사망자 수
midhurt_number: Current_TrafficAcc.items.item[0].se_dnv_cnt, //중상자 수
lighthurt_number: Current_TrafficAcc.items.item[0].sl_dnv_cnt, //경상자 수
occur_number: Current_TrafficAcc.items.item[0].occrrnc_cnt //발생건수
......@@ -143,7 +146,8 @@ module.exports = (server, app) => {
//죽을 확률 계산(내맘대로 커스텀)
info.death_prob = (
(info.heat / 50) + (Math.abs(info.sensible_temperature - 15) / 10) + (info.discomport / 10) + (info.UV / 10)
+ info.windspd*1 + (info.rain / 10) + (Math.abs(info.current_temperature - 15) / 10)
+ info.windspd * 1 + (info.rain / 10) + (Math.abs(info.current_temperature - 15) / 10)
+ (info.death_number / 50) + (info.midhurt_number / 80) + (info.lighthurt_number / 90) + (info.occur_number / 90)
);
//이벤트 기반으로 일정 시간 간격으로 클라이언트에게 보낼 정보, 홈페이지 그래프에 나타날 정보
......@@ -164,15 +168,15 @@ module.exports = (server, app) => {
// 심장이 크게 뛰며 확률이 증가하거나 감소 할 수 있음
Math.random() * 2 >= 1 ? client_send.death += getRandom_add_prob(0,5) : client_send.death -= getRandom_add_prob(0,5) ;
Math.random() * 2 >= 1 ? client_send.death += getRandom_add_prob(0, 5) : client_send.death -= getRandom_add_prob(0, 5);
//운명의 장난으로 죽을 확률이 증가하거나 감소함
const rand = Math.floor(Math.random() * 6) //생년월일 중 한자리 뽑음
Destiny=client_birth.charAt(rand)/3; //명시적 형 변환
if(Destiny==0)Destiny=1; //사용자 잘못 입력했을때 예외처리
Math.random() * 2 >= 1 ? client_send.death += Destiny : client_send.death -= Destiny ;
Destiny = client_birth.charAt(rand) / 3; //명시적 형 변환
if (Destiny == 0) Destiny = 1; //사용자 잘못 입력했을때 예외처리
Math.random() * 2 >= 1 ? client_send.death += Destiny : client_send.death -= Destiny;
//만약 날이 너무 안좋아서 확률이 100을 넘긴다면 100으로 예외처리
......@@ -180,13 +184,13 @@ module.exports = (server, app) => {
client_send.death = 100;
}
console.log("client send data \n",client_send)
console.log("client send data \n", client_send)
app.get("socket").emit("weather_and_traffic_Info_minutely_send_to_client", client_send); // 클라이언트에게 정보 담아서 이벤트 발산
console.log("emit");
//db에 저장
sql = "INSERT INTO weatherInfo (time,wind,temperature,rain,prob) VALUES (?,?,?,?,?)";
/*sql = "INSERT INTO weatherInfo (time,wind,temperature,rain,prob) VALUES (?,?,?,?,?)";
db.query(sql, [client_send.time, client_send.wind, client_send.temperature, client_send.rain, client_send.death], (err, result) => {
if (err) console.log(err);
})
......@@ -194,7 +198,12 @@ module.exports = (server, app) => {
sql_traffic = "INSERT INTO trafficInfo (tdeath,mhurt,lhurt,occurence,prob) VALUES (?,?,?,?,?)";
db_traffic.query(sql_traffic, [client_send.trafficdeath, client_send.mhurt, client_send.lhurt, client_send.occurence, client_send.death], (err, result) => {
if (err) console.log(err);
})*/
sql = "INSERT INTO apisInfo (time,wind,temperature,rain,prob,tdeath,mhurt,lhurt,occurence) VALUES (?,?,?,?,?,?,?,?,?)";
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) => {
if (err) console.log(err);
})
} catch (err) { //promise err or try err catch
console.log("================Error Occured !!================\n", err);
}
......