unknown

request several apis in socket connection

1 +const secret_key = require('../keys/api_option').key;
2 +const requesting = require('request');
3 +
4 +module.exports = (io) => {
5 + let info = {}
6 + setInterval(() => {
7 + requesting.get({
8 + // api를 요청할 주소 -- 시크릿키,위도,경도 입력
9 + url: `https://api2.sktelecom.com/weather/current/minutely?appKey=${secret_key}&lat=37.239795&lon=127.083240`,
10 + json: true
11 + },
12 + //api에게 응답 받았을때 실행되는 callback func
13 + function (err, api_res, api_body) {
14 + if (err) throw err;
15 + // api의 대답이 있을경우 실행
16 + if (api_res) {
17 + console.log(api_body);
18 + io.emit("new_info_in", info) // api 호출 정보 클라이언트에게 전송
19 + }
20 + });
21 + }, 60 * 1000); //1분마다 호출
22 +}
...\ No newline at end of file ...\ No newline at end of file
1 - 1 +const db = require('./db.js');
2 - const db = require('./db.js'); 2 +const secret_key = require('../keys/api_option').key;
3 - const secret_key = require('../keys/api_option').key; 3 +const requesting = require('request');
4 - const requesting = require('request'); 4 +const lat = "37.239795";
5 - 5 +const lon = "127.083240";
6 module.exports = (server, app) => { 6 module.exports = (server, app) => {
7 7
8 const io = require('socket.io', )(server, { 8 const io = require('socket.io', )(server, {
9 transports: ['websocket'] 9 transports: ['websocket']
10 }); 10 });
11 - const API_CALL= setInterval(() => { 11 +
12 + let info = {}
13 + const CALL = (when, what) => {
12 requesting.get({ 14 requesting.get({
13 - // api를 요청할 주소 -- 시크릿키,위도,경도 입력 15 + // api를 요청할 주소 -- 시크릿키,위도,경도 입력
14 - url: `https://api2.sktelecom.com/weather/current/minutely?appKey=${secret_key}&lat=37.239795&lon=127.083240`, 16 + url: `https://api2.sktelecom.com/weather/${when}/${what}?appKey=${secret_key}&lat=${lat}&lon=${lon}`,
15 - json:true 17 + json: true
16 - }, 18 + },
17 //api에게 응답 받았을때 실행되는 callback func 19 //api에게 응답 받았을때 실행되는 callback func
18 - function (err, api_res, api_body) { 20 + function (err, api_res, api_body) {
19 if (err) throw err; 21 if (err) throw err;
20 - // api의 대답이 있을경우 실행 22 + // api의 대답이 있을경우 실행
21 if (api_res) { 23 if (api_res) {
22 console.log(api_body); 24 console.log(api_body);
23 - return response.send("ok");
24 } 25 }
25 }); 26 });
26 - }, 60 * 1000); //1분마다 호출 27 + }
27 28
28 io.on('connection', (socket) => { //웹 페이지 연결시 루프 동작 29 io.on('connection', (socket) => { //웹 페이지 연결시 루프 동작
30 + let API_CALL;
31 +
32 +
33 + socket.on("connection", () => {
34 + API_CALL = setInterval(() => {
35 +
36 + CALL("current","minutely"); //현재날씨 (분별)
37 + CALL("index","wct"); //체감온도
38 + CALL("index","heat"); //열지수
39 + CALL("index","th"); //불쾌지수
40 + CALL("index","uv"); //자외선지수
41 +
42 + }, 60 * 1000); //1분마다 호출
43 + });
44 +
29 socket.on('disconnecting', (reason) => { 45 socket.on('disconnecting', (reason) => {
30 clearInterval(API_CALL); //연결 종료시 해제 46 clearInterval(API_CALL); //연결 종료시 해제
31 }) 47 })
32 - socket.on("connection", (roomnum) => {
33 - API_CALL();
34 - })
35 }) 48 })
36 49
37 50
......