0

Matlab 用のライトストリーマークライアントを構築しようとしています。JAVA、Python、.Net などのプラットフォーム用のライブラリがいくつか存在しますが、残念ながら Matlab はありません。ただし、これらのクライアント実装のほとんどは、非常に基本的な HTTP 要求であるライトストリーマーとまったく同じテキストモード プロトコルを使用していることが判明しました。

ライトストリーマー セッションを確立/閉じる方法を見つけました。sessionId を取得し、この ID を使用して、ストリーミングしたいデータをサブスクライブできます。しかし、サブスクリプションの呼び出しに対して有効な応答は得られますが、プッシュされるデータはありません。

私は urlead2 関数を使用していますが、応答は問題ないようです:

 [output,extras]      = urlread2([lightstream_url,'/lightstreamer/control.txt'],'POST',body,headers);

allHeaders =

      Response: {'HTTP/1.1 200 OK'}
        Server: {'Lightstreamer'}
  Content_Type: {'text/plain; charset=iso-8859-1'}
 Cache_Control: {'no-store'  'no-cache'}
        Pragma: {'no-cache'}
       Expires: {'Thu, 1 Jan 1970 00:00:00 GMT'}
          Date: {'Wed, 8 Apr 2015 11:15:02 GMT'}
Content_Length: {'4'}

ステータス =

value: 200
  msg: 'OK'

良い =

 1

出力 =

OK

レスポンスボディに「OK」が含まれているのは正しいですが、これは文書化されています(ドキュメント、20ページ以降)ですが、ストリームデータ自体もあるはずですよね?

では、実際のデータを取得するにはどうすればよいでしょうか。

4

2 に答える 2

1

設定によってポーリング接続を開くLS_polling=trueと、リスナーを必要とせずに正常に機能することがわかりました。のデフォルトのurlread2ままにしておくとハングします。LS_pollingfalse

  1. でセッションを作成します/lightstreamer/create_session.txt
  2. サブスクリプションをリクエストする/lightstreamer/control.txt
  3. 接続を繰り返しポーリングしてデータを取得します
    /lightstreamer/bind_session.txt

からの戻り値は次のurlread2ようになります。

d =

OK
SessionId:S9b09da8ebd6b835aT5316913
ControlAddress:apd119a.marketdatasystems.com
KeepaliveMillis:1000
MaxBandwidth:0.0
RequestLimit:50000

1,1|10162.00|0.00|0.00
2,2|10686.8|TRADEABLE|0.5524861
2,13|1202.6|CLOSED|0.5714285
2,14|5900.51|CLOSED|0.5714285
...

LOOP 1000
于 2015-04-15T20:58:27.377 に答える