2017-04-04 12 views
2

Autobahn | JS 및 Poloniex.com의 푸시 API에 이상한 문제가 있습니다. 채팅에 모든 메시지를 가져 오기 위해 API에 연결하고 1-2 시간이 지나면 websocket이 오류없이 닫히고 디버그하는 데 도움이되지 않습니다.몇 시간 후에 아우토반이 응답하지 않는 웹 소켓

나는 3 langages (PHP, NodeJS와 JS) 2 문제 (PHP 및 NodeJS)가, 문제없이 일일 이후 내 자바 스크립트 테스트 실행의 동작을 테스트했습니다.

코드

은 매우 간단합니다 :

내가 NodeJS와 같은 문제에 대한 감독자으로 테스트 한
var connection = new autobahn.Connection({url: 'wss://api.poloniex.com', realm: 'realm1'}); 

connection.onopen = function (session) { 
    function onevent(args) { 
     console.log("Message:", args[3]); 
    } 
    session.subscribe('trollbox', onevent); 
}; 

connection.open(); 

, 1 ~ 2 시간 후, 응답 없음, 오류없이, 단지 더 이상 메시지를받을 수 없습니다.

나는 websocket을 처음 사용하기 때문에 더 많이 테스트 할 수 있다고 상상하지만 Javascript의 모든 작업이 저를 혼란에 빠뜨린다는 사실을 알고 있습니다.

+1

필자는 autobahn을 python으로, poloniex api로, 시장 주제로 사용하는 것을 제외하고는 똑같은 문제를 가지고있다. 그래서 나는 그들의 모든 ws에 그것의 순회를 짐작한다. 하지만 문제는 재 연결이 문제이며 다시 연결하는 방법을 찾을 수 없다는 것입니다. – Ilhicas

+0

오늘 밤 파이썬으로 테스트하고 싶었지만 똑같은 문제가 있다는 것을 확인했습니다. 엄청 이상해. 나는 해결책이 수동으로 소켓을 죽이고 그것을 다시 시작하는 것이라고 생각하지만 나는 그런 식으로하지 않는다. 해결책을 찾으면 나눠주세요. 나는 똑같이 할 것입니다. – coolfarmer

+0

이 프로토콜을 사용하지 않으면 데이터가 매우 지연됩니다 (~ 10 시간). [here] (https://stackoverflow.com/questions/42436264/reading-messages-on-poloniex-trollbox-with-python- autbahn-or-other-socket-module /) 더 많은 데이터를 얻으려면 –

답변

0

해결책을 찾지 못해 적절한 "핑"을 구현했습니다. X 분마다 구독을 취소하고 구독합니다 (1 일부터 5 분 간격으로 테스트를 실시 함). 트롤 박스에서 더 이상의 연결 해제 및 누락 된 메시지가 없습니다.

AUTOBAHN_DEBUG = true; 

var autobahn = require('autobahn'); 

(function trollbox() { 

    console.log("\n------------- OPEN CONNECTION ---------------\n"); 
    var connection = new autobahn.Connection({ 
    url: 'wss://api.poloniex.com', 
    realm: 'realm1', 
    max_retries: -1 
    }); 

    connection.onopen = function (session) { 
    function onevent (args) { 

     // Do somethings... 
     console.log(args[3]); 
    } 
    session.subscribe('trollbox', onevent); 

    setTimeout(function() { 
     console.log("\n------------- CLOSING CONNECTION ---------------\n"); 
     connection.close(); 
    }, 300000); 

    }; 

    connection.open(); 

    setTimeout(trollbox, 300200); 
})(); 
0

그래서 지금은 트롤 박스가 작동하지 않으므로 연결이 끊기는 이유는 비활성 때문입니다.

여기에서 웹 사이트 소스를 확인하려면 here 을보고 2440 줄을보고 trollbox 구독이 주석 처리되어 있는지 확인하십시오.