Архитектура: Titanium Desktop против API потоковой передачи Twitter - PullRequest
1 голос
/ 01 января 2012

Я новичок в Titanium, и начал с того, что попытался создать (еще один) клиент Twitter. Проблема, с которой я столкнулся, заключается в том, что я хотел бы использовать потоковый API Twitter , и я изо всех сил пытаюсь понять, как лучше всего это сделать в Titanium Desktop.

Вот варианты, которые я вижу:

  1. Не используйте потоковый API, он не будет работать.
  2. Создайте мост Python, который соединяется с httpclient , который поддерживает потоковые ответы (требуется для Streaming API, он никогда не закрывает соединение). Пусть этот клиент доставит ответы методу Javascript, который форматирует и выводит твиты по мере их поступления. (Проблема здесь: Как мне собрать нужные мне библиотеки Python?)
  3. Используйте Javascript HttpClient, поставляемый с Titanium SDK 1.1, каким-то умным способом, о котором я не знаю.
  4. Используйте версию Titanium SDK 1.2.0-RC2, которая поставляется с HttpClient, поддерживающим потоковые ответы. В примечаниях к выпуску очень мало информации, чтобы судить о том, достаточно ли поддержки потоковой передачи для работы потокового API.
  5. Используйте twstreamer , библиотеку javascript для поддержки потоковой передачи через посредника Flash. Я видел сообщения об ошибках, в которых говорилось, что Flash не работает должным образом внутри Titanium Desktop, но я бы хотел оказаться ошибочным.
  6. Еще один способ, о котором я еще не подумал.

Я надеюсь на всевозможные умные идеи о том, как я могу заставить это работать, и на советы по дальнейшему развитию. Спасибо за чтение!

Ответы [ 2 ]

1 голос
/ 06 января 2012

Вот как это сделать (после МНОГО тестирования):

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);
1 голос
/ 01 января 2012

Я совсем не знаком с Titanium, но, просматривая их документы, вам лучше всего использовать Titanium.Здесь есть много легких вариантов, но учтите, что если вы хотите использовать потоки пользователей, вам понадобится опция, которая поддерживает OAuth и SSL

...