Page 507 - 2020학년도 MDP과제발표회 자료집 (통신과) (3)
P. 507
3) app_server.js
var net = require('net'); // 소켓 서버를 위한 모듈
var que = require('./query.js');
rb = require('./server.js');
var moment = require('moment');
// 앱 서버 생성
var app_server = net.createServer(function(socket){ // 어플 연결
console.log(rb.time()+'App connected');
exports.send = function(data){ // 어플로 데이터 보내기 위한 사용자 정의 함수
console.log(rb.time()+"Server --> App : " + data);
rb_dog_data = data
socket.write(rb_dog_data);
}
socket.setEncoding("utf8"); // 데이터 UTF-8 로 인코딩
socket.on('data', function(data){ // 데이터를 받았을때
console.log(rb.time()+"App --> AppServer:" + data);
if(data == "s"){ // 사료 데이터 테이블 를 요청하는 명령어가 오면( )
que.select('feed', function(db){ //select 문 실행
console.log(db);
socket.write(db); //app 에 데이터값 전송
})
}else if(data == "g"){ // 간식 데이터 테이블 를 요청하는 명령어가 오면( )
que.select('snack', function(db){ //select 문 실행
console.log(db);
socket.write(db); //app 에 데이터값 전송
})
}else{ // 그 외 명령어가 오면
try{
rb.appsend(data); //server.js 의 send 함수로 data 전송
if(data=="1"){
socket.write("Shooting");
que.insert_time() // 시간 저장
}else
socket.write(data); // 전송이 되었음을 app 에 알림
}catch(err){ // 에러가 나면 연결이 안되는 것이다,
console.error(rb.time()+err)
socket.write("Pi POWER OFF") // 클라이언트가 Off 되어있음으로 판단하고 넘긴다
}
}
});
socket.on('end', function(data){ // 소켓 연결 종료 시 콜백함수 실행
console.log(rb.time()+"App disconnected."); // 콘솔창에 연결이 종료되었다고 출력
});
인천전자마이스터고등학교
- 529 - 정보통신기기과 529