CI 묻고 답하기

제목 ajax long polling 방식으로 데이터를 주고 받고 싶은데요
카테고리 CI 2, 3
글쓴이 김밴댕 작성시각 2017/05/29 12:23:31
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 14379   RSS

Codeigniter에서 ajax의 long polling 방식으로 3초에 한번씩 확인하면서 데이터가 들어오면 창을 띄워주는 것을

하고 싶은데요. 코드가 맞는지 정확히 모르겠고 POST 방식으로 해야하는지 GET방식으로 해야하는지 잘 모르겠어요 ㅠㅠ

일단 임시로 데이터를 넣어서 보내줬는데 setInterval 로 해도 반응을 안하네요 그리고 controller에 포스트 방식으로 받는게

저런식으로 받는게 맞을까요? ㅠㅠ 도와주십시요 

controller 입니다.

데이터를 보낼 view입니다.

데이터를 3초마다 확인하고 받을 view 입니다.

 다음글 db 수동연결시 폼 검증에 대해 여쭤보고 싶습니다. (2)
 이전글 게시판을 만들고 있는데, 궁금한 부분이 있어 질문합니다... (1)

댓글

변종원(웅파) / 2017/05/29 13:08:12 / 추천 0

ajax의 개념을 다시 보셔야할 것 같네요.

 

ajax를 호출한 클라이언트에서 결과를 확인할 수 있는 것이지 전송은 다른 곳에서 하고

ajax로 데이터를 긁어오는 것은 맞지 않는 방식입니다.

3초에 한번 데이터를 가져올때 필요한 데이터도 전송하여 리턴 받은 데이터를 사용하는 방식이 맞습니다.

페이팔의 일부 결제방식이 페이팔 특정 주소 호출하고 리턴 없음. 호출시 결과를 받을 주소를 같이 전송하여

페이팔에서 액션이 끝나면 아까 전송한 주소에 데이터를 전송. 받는 쪽에서는 db insert나 update 처리하고 끝.

화면 액션 없이 서버단에서 데이터처리만 하고 끝납니다.

 

결론 ajax 호출하는 곳에서 시작, 종료일을 전송해서 데이터를 가져오도록 바꾸고

그 결고를 처리하도록 수정하시면 됩니다.

 

김밴댕 / 2017/05/29 13:47:11 / 추천 0

작성자입니다. 

어... ajax를 이용해서 채팅창도 만들수 있던데 데이터를 서로 주고받는 형태로 사용하면 안되는 건가요?

 

변종원(웅파) / 2017/05/29 13:53:53 / 추천 0

김밴댕/ 그건 소켓이나 node.js를 이용했을때 이구요. php는 서로 연결할 수 있는 구조가 없습니다.

php로 채팅을 구현하려면 중간 어딘가에 저장하는 곳이 있어야 합니다. 저장된 내용을 ajax로 가져오고 보내주고

해서 채팅을 가능하게 합니다. 채팅자간 연결은 할수가 없는거죠. 채팅자 - 서버 - 채팅자 이런 구조가 됩니다.

그래서 개념을 다시 보셔야 한다고 말씀드린 겁니다.

김밴댕 / 2017/05/29 14:31:49 / 추천 0

작성자입니다.

아 그렇군요. 이해가 되네요. 제가본 채팅창 코드는 데이터베이스에 채팅을 저장해서 가져오는 방식이었거든요.

그런데 node.js는 홈페이지가 닷홈이나 카페24로 호스팅을 하면 쓸 수 없다는 정보를 들어서 사용을 안했거든요.

다른 방법이 없다면 데이터를 DB에 저장하고 써도 무방할까요 ??

변종원(웅파) / 2017/05/29 15:08:59 / 추천 0

김밴댕/ 네. 충분히 가능하고 예전부터 써왔던 방식입니다. 단점은 서버부하가 크다는 것이구요.

3분에 1번 데이터를 가져온다고 가정했을때 현재 사용자가 100명이라면 3분에 1번씩 서버에서 100번의 쿼리가 일어나죠.

간단한 수준이라면 db를 이용한 채팅 가능합니다.

김밴댕 / 2017/05/29 16:07:07 / 추천 0

친절한 답변 감사합니다 !!! ㅠㅠ 

덕분에 이해가 빨리 된 것 같아요 너무 답답해 하고 있었거든요

저도 변종원님처럼 얼른 고수가 되서 누군가에게 도움을 주는 코더가 되고 싶습니다 !