2012-01-01 6 views
1

私はTitaniumを初めて使い、まだ別のTwitterクライアントを構築しようとしています。私が遭遇した問題は、TwitterのStreaming APIを使いたいということです。私はTitanium Desktop内でこれを行う最善の方法を理解するのに苦労しています。ここでアーキテクチャ:チタンストリーミングAPIに対するデスクトップ

は、私が見たオプションです。

  1. はそれを動作させるつもりはない、ストリーミングAPIを使用しないでください。
  2. httpclient that supports streaming responsesに接続するPythonブリッジを構築します(Streaming APIに必要です。接続を閉じることはありません)。そのクライアントは、つぶやきをフォーマットして出力するJavascriptメソッドに応答を渡すようにします。 (ここでの問題:必要なPythonライブラリをバンドルするにはどうすればいいですか?)
  3. Titanium SDK 1.1に付属しているJavascriptのHttpClientを、わかりやすく使ってください。
  4. ストリーミング応答をサポートするHttpClientに同梱されているTitanium SDKの1.2.0-RC2 releaseを使用してください。リリースノートには、ストリーミングサポートがストリーミングAPIを使って作業するのに十分かどうかを判断するための情報はほとんどありません。
  5. Flash中間体によるストリーミングサポートのためのjavascriptライブラリtwstreamerを使用してください。私はFlashがTitanium Desktop内でうまく動作しないというバグレポートを見たことがありますが、間違っていることが分かりました。
  6. 私はまだ考えていない別の方法。

私は、この仕事をどのように得ることができるか、今後のアドバイスを得るためのあらゆる種類の巧妙なアイデアを期待しています。読んでくれてありがとう!

答えて

1

をする必要がありますuserstreams使用したい場合はここで(テストのLOTS後に)それを行う方法だということに注意してください:

var xhr = Titanium.Network.createHTTPClient(); 
xhr.open("GET", "https://stream.twitter.com/1/statuses/filter.json?track=<Your-keyword-to-track>", true, '<Your-twitter-nickname>', '<Your-twitter-password>'); 
xhr.send(); 

var last_index = 0; 
function parse() { 
    var curr_index = xhr.responseText.length; 
    if (last_index == curr_index) return; // No new data 
    var s = xhr.responseText.substring(last_index, curr_index); 
    last_index = curr_index; 
    console.log(s); 
} 

var interval = setInterval(parse, 5000); 
setTimeout(function(){ 
    clearInterval(interval); 
    parse(); 
    xhr.abort(); 
}, 25000); 
+0

恐ろしい!これは、標準のXMLHttpRequestでも動作するようです。 –

+0

@MartinVilcans:適切なCORSヘッダーを設定せずに許可されていれば、クロスドメインXMLHttpRequestsである可能性があります。あなたはあなた自身のサイトに対してそれを使用することができます... –

1

私はTitaniumについてよく知っているわけではありませんが、ドキュメントを見ていると、Titanium.Processを使用してストリーミングレスポンスに対応することができます。そこ軽量のオプションの多くはここですが、あなたはOAuthのサポートオプションとSSL

+0

良いアイデアは、あなたの考えをapprieciate。これは私に新しいプロセスを提供しますが、コンテンツを段階的に配信できるようにするためのHTTPクライアントを手に入れることがどのように役立つかはわかりません。 –

+0

外部プロセスがストリームからstdoutに渡すすべての行を書き出します。基本的なレベルでは、これは単にcurl -s -u https://stream.twitter.com/1/statuses/sample.jsonになる可能性があります。 IOハンドラを接続します。 writeが呼び出されると、解析して処理できるJSONメッセージが表示されます。このデータは段階的に取得する必要があります。 – mccv

+0

"外部プロセスがストリームからstdoutに渡すすべての行を書き出すようにしてください" < - これは私が解決しようとしている問題です。チタンにバンドルされているhttpclientは、私が理解している限り、受信が完了するまでデータを返しません。 –

関連する問題