개발 Q&A

제목 DB 갱신시 클라이언트에 알림 보내기
카테고리 DB
글쓴이 Tooky 작성시각 2018/02/20 22:44:12
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 14666   RSS

안녕하세요. 이제 웹개발을 시작한지 얼마 안된 초보 개발자입니다.

DB에서 데이터를 갱신할때 해당 데이터가 출력되는 부분만을 새로고침 하는 페이지를 개발하고자 합니다.

백그라운드단에서 cron을 이용하여 주기적으로 데이터 갱신->클라이언트에 알림->클라이언트 새로고침

을 구현하고자 하는데요. 데이터 갱신시에 클라이언트에 알림을 보낼 방법이 무엇이 있을까요?

 다음글 아파치 가상호스트와 ssl 로그파일 중복이 가능한가요? (2)
 이전글 CI + socket.io 설치 방법에 대한 문의입니다... (10)

댓글

이제다시 / 2018/02/21 10:04:17 / 추천 1

실시간 처리 시 Websocket 을 이용하여 데이터 변경 시 이벤트를 전달하는 방법이 있습니다. 

angularjs 를 이용하여 데이터바인딩을 하면 페이지 리로드 없이 화면을 수정하는 것도 가능합니다. 

 

참고 URL : http://woowabros.github.io/woowabros/2017/09/12/realtime-service.html

 

위와 같이 구현하는 방법은 상당히 난이도가 있고 어려울 수 있으니

클라이언트에서 주기적으로 setTimeout 함수를 이용하여 ajax 호출하여 데이터를 가져오는 방법을 추천 드립니다. 

 

구글 firebase api 를 이용하신다면 좀 더 편하게 구현 가능합니다.

참고 URL : https://firebase.google.com

kaido / 2018/02/21 10:26:01 / 추천 1

검색해보니 동일한 질문이 하나 있네요.

https://hashcode.co.kr/questions/2853/db-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B3%80%EA%B2%BD%EC%8B%9C-%EC%9B%B9%EC%97%90%EC%84%9C-%EC%95%8C%EC%88%98%EC%9E%88%EB%8A%94-%EB%B0%A9%EB%B2%95%EC%9D%B4-%EC%9E%88%EB%82%98%EC%9A%94

 

트리거로 잡아서 하면 되지 않을까? 싶었는데 질문의 대답에도 웹소켓으로 폴링 하는 방법과 트리거를 쓰는 방법 2가지 있다고 나오네요.

 

Tooky / 2018/02/21 15:51:24 / 추천 0
모두 답변 감사합니다. 자바스크립트 공부를 아직 하지 않아서 ajax나 node.js는 좀 부담스럽네요 ㅠㅠ 우선 다른 부분을 구현하고 따로 공부를 해봐야겠습니다. 링크들 많은 도움 되었습니다. 감사합니다!
kaido / 2018/02/21 16:36:33 / 추천 1

node는 둘째치고라도 CI로 MVC !!! 하고 나면 제일 먼저 jquery ajax 해보시는걸 추천드립니다.

오히려 잘 모를때 있는 그대로 따라해야 금방 배웁니다.

ajax 어려워 하시는 분들은 보통 이론만 잔득 들어서  머리로만 이해 하다보니, 어렵게 느끼시더군요.

호출 이벤트의 차이일뿐 submit 때리나 ajax call 하나 별반 차이 없다는걸 인식 하고 가시는게 좋을것 같습니다.

Tooky / 2018/02/21 16:47:06 / 추천 0

혹시 MVC로 하라는 방식을 좀 더 자세하게 설명해주실수 있을까요?? 제 생각으로는 submit을 말씀하신걸로 보아 DB를 업데이트 할때마다 그 값을 실어서 submit으로 보내고 $_GET(혹은 $_POST)을 이용해서 데이터를 받아온다. 라고 이해하였는데 맞나요?

이론만 잔뜩 들었다 ㅠㅠ 공감되네요 강의 쭉 듣고 뭔가 만들어보려니까 머릿속으론 이렇게 하면 되겠다 하는데 막상 코딩을 하려니까 머릿속이 새하얘지네요 ㅠㅠ

kaido / 2018/02/21 17:20:54 / 추천 0

혹시 CI를 사용하지 않고 네이티브 PHP만으로 스터디중이신가요? ㅎㅎ

 

MVC이라는 것은 MVC패턴을 의미합니다.

하나의 웹 페이지의 처리를  3단계로 나눈것 입니다.

 

기존에는 단일 페이지 php 파일 하나에서 MVC가 모두 들어가 있는 방식을 사용했습니다.

 

C [controller] 컨트롤러.   데이터를 컨트롤하는 파트이며, 순수하게 로직이나 콜을 담당합니다.

M [Model]  모델.   보편적으로 database 데이터를 불러오고 리턴해 주는 부분을 담당합니다. 명확히는 데이터 저장소라고 보시면 됩니다.

V [View] 뷰.  뷰어를 담당. 즉 실제 출력되는 파트입니다. 

 

컨트롤러에서 페이지 콜을 받고 이를 모델에서 데이터를 컨트롤러가 받아가서, 다시 뷰에다 전달해 주고, 뷰는 이 데이터를 랜더링 하게 되는 구조입니다. 

 

MVC를 하라는 의미는 페이지를 submit 방식으로 정상 호출하고나서, 비교해서 비동기식으로 ajax를 해보시라는 이야기 이었습니다.

 

PS. 특정 페이지만 submit 으로 호출 마다 알림을 알리는것은 어려운 일은 아닙니다.

트리거를 언급한 이유는 모든 액션에 대해서 동일하게 한방에 처리 하기 위해서 언급 된것이며, 하나의 액션에 알림 하나만 뜨기 원하신다면 ajax를 사용하면 바로 해결될 사안으로 보입니다.

Tooky / 2018/02/21 22:37:31 / 추천 0

해결했습니다! JQuery와 Ajax를 벼락치기로 필요한 부분만 공부해서 얼추 구현했습니다( jquery문법을 모르는 관계로 자바스크립트와 엉망진창 섞였지만..)

상당히 유용한 기능같아서 바로 자바스크립트, JQuery를 공부해보려고 합니다. 웹소켓 부분은 간단하게 찾아봤는데 node.js쪽은 많이 사용하시는거 같네요 이쪽도 나중에 시간되면 자세히 알아보려고 합니다.

다시한번 댓글 남겨주신 분들 감사드립니다. 완전 우문현답의 현장이었네요 ㅎㅎ;

백그라운드 단에서 지속적으로 디비를 업데이트 시켜주고 업데이트를 해줄때마다 json 파일을 출력해주는 php를 만들고 데이터를 출력하는 view에 jquery의 ajax()를 이용하여 일정 시간마다 json파일을 가져오는 방식으로 구현했습니다.