В настоящее время я пытаюсь реализовать поток Twitter с использованием API потоковой передачи Twitter, и я использую Flask-SocketIO для использования в Python. Теперь я могу отправить сообщение, чтобы вызвать функцию во Flask, которая вызывает API Twitter на основе некоторого ключевого слова, но я хочу, чтобы текст из потока возвращался во внешний интерфейс JavaScript, который не был слишком успешным. Я могу отправить, например, сообщение типа «Привет», если я слушаю «сообщение», но я пытался отправить JSON обратно, но безрезультатно.
Моя функция Flask для этого:
@socketio.on('my event')
def handle_my_custom_event(json):
print('received json: ' + str(json))
r = api.request('statuses/filter', json)
for item in r.get_iterator():
if 'text' in item:
print(item['text'])
json_data = {'data': item['text']}
send(json_data, json=True)
JSON в данном случае равен {'track':'$AAPL'}
, поэтому каждый твит об Apple извлекается по мере его появления. item['text']
— строка текста твита. Я пробовал использовать send, также пытался использовать emit('my response',json_data)
и слушал «мой ответ», но я не уверен, что делаю все правильно.
Мой интерфейсный скрипт для этого в настоящее время выглядит так:
$(document).ready(function() {
var socket = io.connect('http://' + document.domain + ':' + location.port);
socket.on('connect', function() {
socket.emit('my event', {'track': '$'+data_prices[0]['symbol'].toString()}, function(data){
console.log(data);
if (data.error)
console.log('Something went wrong on the server');
if (data.ok)
console.log('Event was processed successfully');
});
});
});
но я не получаю ни журналов консоли, ничего.
Что мне нужно сделать, чтобы получить объект json_data
в моем внешнем скрипте и вывести его на консоль?
ОБНОВЛЕНИЕ: мне удалось получить их, когда я отправляю их в событие «мой ответ», но, похоже, они регистрируются в консоли только тогда, когда я закрываю сервер. Есть ли способ сохранить это как поток на консоль, чтобы я мог использовать данные во внешнем интерфейсе?