1

我是 Titanium 的新手,并开始尝试构建一个(又一个)Twitter 客户端。我遇到的问题是我想使用 Twitter 的Streaming API,而我正在努力理解在 Titanium Desktop 中执行此操作的最佳方法。

这是我看到的选项:

  1. 不要使用 Streaming API,它不会工作。
  2. 构建一个 Python 桥接器,该桥接器与支持流式响应的 httpclient连接(Streaming API 需要,它从不关闭连接)。让该客户端将响应传递给 Javascript 方法,该方法会在推文出现时对其进行格式化和输出。(这里的问题:如何捆绑我需要的 python 库?)
  3. 以某种我不知道的巧妙方式使用 Titanium SDK 1.1 附带的 Javascript HttpClient。
  4. 使用1.2.0-RC2 版本的 Titanium SDK,它附带支持流式响应的 HttpClient。发行说明中几乎没有信息来判断流支持是否足以让流 API 工作。
  5. 使用twstreamer,这是一个通过 Flash 中介支持流式传输的 javascript 库。我已经看到错误报告指出 Flash 在 Titanium Desktop 中不能很好地工作,但我很想被证明是错误的。
  6. 我还没有想到的另一种方式。

我希望有各种聪明的想法来说明我如何让这个工作,以及前进的提示。谢谢阅读!

4

2 回答 2

1

这是如何做到的(经过大量测试):

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);
于 2012-01-06T00:50:09.257 回答
1

我对 Titanium 一点也不熟悉,但是查看他们的文档,你最好的选择可能是使用 Titanium.Process 来分叉一些可以处理流响应的东西。这里有很多轻量级选项,但请注意,如果您想使用用户流,您需要一个支持 OAuth 和 SSL 的选项

于 2012-01-01T19:30:53.697 回答