2015-07-19 7 views
2

Я пытаюсь использовать нок для запуска backtests на код, написанный против торгового API Oanda. Для этого мне нужно смоделировать API потоковой цены (см. «Потоки потоков» на http://developer.oanda.com/rest-practice/streaming/). Тем не менее, похоже, что нок только позволяет ответить одним ответом, хотя ответ - поток. Есть ли способ отправить поток тысяч ценовых событий в виде индивидуальных ответов на один запрос?Имитировать открытую сетевую розетку с nock

var scopeStream = nock('https://stream-fxpractice.oanda.com') 
    .persist() 
    .filteringPath(function(path) { 
    return '/stream'; 
    }) 
    .get('/stream') 
    .reply(function(uri, requestBody) { 
    return [200, {"tick":{"instrument":"AUD_CAD","time":"2014-01-30T20:47:08.066398Z","bid":0.98114,"ask":0.98139}}] 
    }) 
+0

сверчков :-(Нет идей? – greymatter

ответ

1

Согласно этому Nock documentation вы можете вернуть ReadStream в вашем ответе.

Я использовал пакет stream-spigot НПМ придумать следующий пример (используется для имитации потока событий Marathon):

const nock = require('nock'); 

const EventSource = require('eventsource'); 
const spigot = require('stream-spigot'); 

let i = 0; 

nock('http://marathon.com') 
     .get('/events') 
     .reply(200, (uri, req) => { 
      // reply with a stream 
      return spigot({objectMode: true}, function() { 
       const self = this; 
       if (++i < 5) 
        setTimeout(() => this.push(`id: ${i}\ndata: foo\n\n`), 1000); 
      }) 
     }); 

const es = new EventSource('http://marathon.com/events'); 

es.onmessage = m => console.log(m); 

es.onerror = e => console.log(e); 

 Смежные вопросы

  • Нет связанных вопросов^_^