2013-05-24 4 views
2

에서 나는 다음과 같은 사양과 Mtgox의 웹 소켓에 R에 연결을 설정 관리 향상된 R 라이브러리 "websocket"이 https://github.com/zeenogee/R-Websockets에서 다운로드되었습니다.WebSocket을은 R

require("websockets") 
con = websocket("https://socketio.mtgox.com/mtgox?Currency=USD") 

연결이 성공적으로 설정되었습니다. 그러나 소켓이 방송되지 않는 것 같습니다. 나는 쉬운 함수를 만들었다 f

f = function(con) { 
    Print("Test Test!", con) 
} 

set_callback("receive", f, con) 

while(TRUE) 
    { 
    service(con) 
    Sys.sleep(0.05) 
    } 

어떤 데이터가 웹 소켓으로부터 수신 될 때마다 어떤 텍스트를 출력해야한다. 그러나 websocket doesnt는 "수신"방법을 트리거하는 것으로 보이며 아무 것도 표시되지 않습니다. 코드가 출력없이 무한 루프로 끝났습니다.

websocket이 작동하고 있으므로 코드에 실수가 있어야합니다. 어떻게 든 방송을 시작하려면 소켓을 "ping"해야합니까? 누구나 일할 수있는 방법이 있습니까? 감사합니다. 첫째

답변

2

, 당신은 당신이 무한 루프 정의하기 때문에, 무한 루프가 있습니다

While(TRUE) 

그것은 주목할 가치가있다, 다수의 R 웹 소켓 구현 활용이 루프를, 그래서 버그가 아니라 구현하지 않을 수 있습니다 당신이보고있는 것을 일으키는 세부 사항.

'수신'이 아닌 '메시지'이벤트에 가입해야하는 것으로 보입니다 ( https://en.bitcoin.it/wiki/MtGox/API/Streaming).

자바 스크립트에서 (MtGox 사양에서) :

conn.on('message', function(data) { 
    // Handle incoming data object. 
}); 

또는 R의 :

set_callback('message',f,con) 

그 실패 ...

나는 또한 말을 언급 것, 어쩌면 스트림 R 인쇄 기능에서 암시 적으로 인쇄 할 수없는 데이터가 반환됩니다.

샘플 : 데이터가 스펙에 정의 된 형식을 따릅니다

{ 
    "op":"remark", 
    "message":<MESSAGE FROM THE SERVER>, 
    "success":<boolean> 
} 

경우, 데이터가 해석되는 방법을 조사 할 수 있으며, 반환되고있는 "OP".