자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi DATASNAP - CALLBACK 관련 문의 드립니다.
2017.03.25 14:35
본 게시판 사용시 당부 사항
* 이 게시판은 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 어느 누구도 답변을 달아야만 하는 책임은 없습니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
* 본 질문에 답변을 주시는 여러 개발자님들께 미리 감사드립니다.
-----------------------------------------------------------------------------------------------
툴은 델파이XE7으로 테스트 중입니다.
DATASNAP 서버를 만들고 CALLBACK연결까지는 테스트 성공 했는데요... 이 상태로 아무런 작업없이 가만히 두면 약 30분에서 1시간후 CALLBACK이 끊어 지는 듯한 느낌이 있습니다. 그래서 서버측에서 CLIENT측으로 NotifyCallback이나 BroadCastCallback을 보내면 Client에서 아무런 반응이 없습니다.
콜백 세션을 유지 시키는 무언가를 설정해야 하는건지 아니면 주기적으로 Callback을 재 연결해야 한는건지 궁금합니다.
댓글 2
-
험프리
2017.03.27 09:40
-
담더기
2017.03.27 10:46
좋은 답변 감사합니다.
한가지더 문의를 하면 클라이언트에서 Datasnap서버에 접속후 RegisterCallback을 하게 되면 세션이 두개 생성이 되더군요.. SqlConnection과 Callback세션.. 말씀하신 메소드를 이용하는것은 주기적으로 EchoString을 보내게 했습니다. 여기서 궁금한거는 서버측에 "나 살아 있어요~" 하기 위한 EchoString과 CallBack측에 도 연결되어 있다는 것을 각각 따로 보내야 하는 것인가요?? 테스트는 클라이언트에서 자기 자신에게 NotifyCallback을 하고 있습니다만.. 각각 해야 하는 것인지 아니면 하나만 해도 되는 것인지요.. NotifyCallback의 경우 1초 단위로 계속 보내보니 중간위 실패 하는 경우가 있더라구요.. 실패 했을때 같이 보내는 JSONValue가 붕 뜨게 되어 Leak이 발생하더라구요...
Delphi DATASNAP - CALLBACK 관련 문의 드립니다.
2017.03.25 14:35
본 게시판 사용시 당부 사항
* 이 게시판은 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 어느 누구도 답변을 달아야만 하는 책임은 없습니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
* 본 질문에 답변을 주시는 여러 개발자님들께 미리 감사드립니다.
-----------------------------------------------------------------------------------------------
툴은 델파이XE7으로 테스트 중입니다.
DATASNAP 서버를 만들고 CALLBACK연결까지는 테스트 성공 했는데요... 이 상태로 아무런 작업없이 가만히 두면 약 30분에서 1시간후 CALLBACK이 끊어 지는 듯한 느낌이 있습니다. 그래서 서버측에서 CLIENT측으로 NotifyCallback이나 BroadCastCallback을 보내면 Client에서 아무런 반응이 없습니다.
콜백 세션을 유지 시키는 무언가를 설정해야 하는건지 아니면 주기적으로 Callback을 재 연결해야 한는건지 궁금합니다.
댓글 2
-
험프리
2017.03.27 09:40
-
담더기
2017.03.27 10:46
좋은 답변 감사합니다.
한가지더 문의를 하면 클라이언트에서 Datasnap서버에 접속후 RegisterCallback을 하게 되면 세션이 두개 생성이 되더군요.. SqlConnection과 Callback세션.. 말씀하신 메소드를 이용하는것은 주기적으로 EchoString을 보내게 했습니다. 여기서 궁금한거는 서버측에 "나 살아 있어요~" 하기 위한 EchoString과 CallBack측에 도 연결되어 있다는 것을 각각 따로 보내야 하는 것인가요?? 테스트는 클라이언트에서 자기 자신에게 NotifyCallback을 하고 있습니다만.. 각각 해야 하는 것인지 아니면 하나만 해도 되는 것인지요.. NotifyCallback의 경우 1초 단위로 계속 보내보니 중간위 실패 하는 경우가 있더라구요.. 실패 했을때 같이 보내는 JSONValue가 붕 뜨게 되어 Leak이 발생하더라구요...
네트워크 프로그래밍에서 하트비트(Heartbeat)라는 개념이 있습니다.
네트워크가 연결된 후 일정기간 데이터 송수신이 없을 경우 연결이 닫히게됩니다.
이 연결이 자동으로 닫히는 것을 방지하기 위해 주기적으로 작은크기의 데이터를 주고받아 연결을 유지하는 개념입니다.
즉, 데이터스냅에서 연결을 유지하려면 하트비트 용도의 서버메소드를 하나 만들어 주기적으로 전송하면 연결을 유지할 수 있습니다.
자세한 내용은 네트워크 프로그래밍 관련 서적이나 인터넷 자료를 참고해 보세요.