This repository was archived by the owner on Nov 9, 2017. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 30
/
Copy pathMarketDataSubscription_LongPoll.js
77 lines (72 loc) · 1.98 KB
/
MarketDataSubscription_LongPoll.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
var fs = require('fs');
var util = require('util');
var request = require("request");
var opts = require("./cmdline").parse(); // Parse cmdline options.
var url = 'https://' + opts.host + ':' + opts.port;
var opt = {
cert: fs.readFileSync('client.crt'),
key: fs.readFileSync('client.key'),
ca: fs.readFileSync('bloomberg.crt')
}
var NUM_REQUEST = 10; // Number of long-poll requests before unsubscribe.
var counter = 0;
function subscribe()
{
request.post({
url: url + '/subscription?action=start',
body: [
{ security: 'AAPL US Equity', correlationId: 0, fields: ['LAST_PRICE'] },
{ security: 'GOOG US Equity', correlationId: 1, fields: ['LAST_PRICE'] }
],
json: true,
agentOptions: opt
}, function (error, response, body) {
if (error) {
console.log(err.message);
process.exit();
}
console.log('Subscribed.');
console.log(body);
poll();
});
}
function poll()
{
request.get({
url: util.format('%s/subscription?pollid=%d', url, counter),
json: true,
agentOptions: opt
}, function (error, response, body) {
if (error) {
console.log(err.message);
process.exit();
}
console.log('Response: ' + counter);
if (response.statusCode === 200 && !body.status) {
++counter; // Increase poll id only if poll succeed
}
console.log(body);
if (counter < NUM_REQUEST) {
poll();
} else {
unsubscribe();
}
});
}
function unsubscribe()
{
request.post({
url: url + '/subscription?action=stop',
json: true,
agentOptions: opt
}, function (error, response, body) {
if (error) {
console.log(err.message);
process.exit();
}
console.log('Unsubscribed.');
console.log(body);
process.exit();
});
}
subscribe();