Предполагая, что у меня есть поток данных бэкэнда Flask
побитно, следуя примерно так:
from flask import Flask, Response, jsonify
from flask_cors import CORS
import json
from itertools import cycle
from time import sleep
app = Flask(__name__)
CORS( app)
@app.route('/')
def hello_world():
def gen():
for i in cycle(range(1,10)):
yield json.dumps( {"new_val":i})
sleep(1)
return Response( gen())
app.run( port=5000, debug=True)
Как я могу собрать эти данные в чем-то вроде Observable
в приложении Angular 5-6-7? Я пробовал играть с httpClientModule
и провел небольшое исследование, но не нашел ни одного рабочего примера.
HttpClientModule
- не то, что вам нужно для этого. Лучше всего использовать библиотеку RxJs Websocket. Эта библиотека сделает это намного проще, если вы знаете, как настроить серверную часть для приема Websocket. Если вас беспокоит объем данных, передаваемых по сети, вы также можете использовать заголовки протоколов, в частности библиотеку Google protobuf. Это можно найти здесь: https://developers.google.com/protocol-buffers/
Я предлагаю вам использовать для этого клиентский api socket.io https://www.npmjs.com/package/socket.io-client
учебник для этой библиотеки с angular 2+ http://www.syntaxsuccess.com/viewarticle/socket.io-with-rxjs-in-angular-2.0
и проверьте, как это реализовать на бэкэнде фляги
HttpClientModule не поможет. Да, методы RESTful возвращают Observables, но они делают это для включения отмены, а не для отправки нескольких полезных данных. Вероятно, вы захотите что-нибудь сделать с веб-сокетами.