角度为6的WebSocket被破坏

时间:2018-06-17 23:04:21

标签: python angular websocket socket.io flask-socketio

我正在尝试学习如何将WebSocket与python后端和Angular 6前端结合使用。
看起来WebSocket连接被破坏,因为更新仅在我在下一行放置断点时才起作用:

ngOnInit() {
   this.sub = this.socketService.getQuotes()
  .subscribe(quote => {
    console.log('got price: ' + quote);
    this.price = quote;
  });
} // breakpoint

后端非常简单:

def send_market_price():
    threading.Timer(5.0, send_market_price).start()
    print('sending price ws')
    socketio.emit('market', market.update_market())

if __name__ == '__main__':
    send_market_price()
    print('starting')
    socketio.run(app)

服务也是基本的:

@Injectable()
export class SocketService {
  public socket;
  public observer: Observer<number>;

  getQuotes(): Observable<number> {
    this.socket = socketio(SERVER_URL);

    this.socket.on('market', (res) => {
      this.observer.next(res);
    });

    return this.createObservable();
  }

 createObservable(): Observable<number> {
   return new Observable(observer => {
   this.observer = observer;
 });
}

我的代码是否有任何错误来执行此基本功能?

修改

经过一些测试后,看起来后端有问题。我做了同样的事情来获得Node.js代码并且效果很好。

这个python代码有什么问题:

import threading
from flask import Flask, jsonify
from flask_cors import CORS
from flask_socketio import SocketIO

from market_engine import market
from market_engine.market import RandomMarket

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
CORS(app)
market = RandomMarket()

@socketio.on('connect')
def connect():
    print('Client connected')

@socketio.on('disconnect')
def disconnect():
    print('Client disconnected')

def send_market_price():
    threading.Timer(5.0, send_market_price).start()
    print('sending price ws')
    socketio.emit('market', market.update_market())

if __name__ == '__main__':
    send_market_price()
    print('starting')
    socketio.run(app)

0 个答案:

没有答案
相关问题