CybosPlus Communication
대신증권의 통신은 Request/Reply ( RQ/RP ) 방식과 Subscribe/Publish (SB/PB) 방식으로
나눠집니다. CybosPlus의 각 통신 오브젝트는 이 두 가지 통신 모델 중 한가지만 지원합니다.
1. RQ/RP 와 SB/PB 비교 [ 비동기식 (asynchronous) ]
입력 데이터를 채워넣고 통신을 요청(Request or Subscribe) 하면 함수가 바로 반환된다.
그 후 서버로부터 데이터가 수신되면 Received 이벤트가 발생하게 된다
- RQ/RP : 현시점의 데이타 1회 통신 요청
- SB/PB : 실시간 데이타 수신 요청
변경 시에만 이벤트가 발생합니다.
요청시점의 데이타를 얻기위해서는 먼저 RQ/RP 오브젝트로 구현한 이후에 사용하세요.
복수종목을 실시간으로 수신받으려면 1,2 항목을 반복하면 됩니다.
2. RQ/RP의 동기식 통신 지원
[ 동기식 (synchronous) ]
입력 데이터를 채워넣고 BlockRequest 메소드를 호출하면, 서버로 부터 응답이 완료 될 때 까지
대기상태를 유지한다. 데이터를 정상적으로 수신한 후에야 함수가 리턴된다.
30초 동안 서버로 부터 요청한 데이타를 수신하지 못 하면 타임아웃으로 처리된다.
BlockRequest 함수의 리턴값으로 통신결과 상태를 확인할 수 있다
3. RQ/RP의 연속 데이타 통신
데이타 수신시에는 효율성을 고려하여 데이타의 적정 Size가 있습니다.
모든 데이타를 한번의 요청으로 얻는 것이 아니라, 여러번 요청으로 데이터를 얻을 수 있습니다.
예를 들면, CYBOS의 화면 7024,7026 처럼 시간대별, 일자별의 데이타의 양이 많습니다.
이런 경우 화면 우측 상단에 "다음" 버튼이 존재합니다.
"다음" 버튼이 활성화 되어 있다는 것은 현재 수신된 데이타 이후로 데이타가 존재한다는 의미입니다.
CybosPlus에서 CYBOS 화면의 "다음" 버튼이 활성화 된 상태와 같은 의미로는
각 오브젝트에 공통 프로퍼티인 Continue가 True인 상태입니다.
아래 그림과 같이 CybosPlus에서는 데이타를 수신 받고나서 Continue 속성을 체크합니다.
Continue가 Ture인 것은 연속데이타가 있다는 의미이므로,
그 상태에서 통신을 요청하면(BlockRequest 또는 Request) 연속데이타를 얻을 수 있습니다.
( 다음 그림은 동기식(BlockRequest)으로 설명한 것입니다. 비동기(Request)로도 연속 데이타 통신 구현이 가능합니다)
각 오브젝트 설명에 연속데이타 통신이 가능한 경우 [연속여부]에O 또는 X 로 구분하였습니다.
ex) StockWeek
설명 |
주식 종목에 대해 일자별 주가 데이터 (최고 10년치 데이터)를 최근의 날로부터 그 일정 시점의 날까지 시가,고가,저가,종가,등락률,외인 비중 등등격 |
통신종류 |
Request/Reply |
연속여부 |
O |
... |
... |