第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python Flask emit() 函數(shù)不向客戶端發(fā)送實時數(shù)據(jù)

Python Flask emit() 函數(shù)不向客戶端發(fā)送實時數(shù)據(jù)

慕絲7291255 2022-12-02 15:52:14
我制作了一個倒數(shù)計時器,并在 for 循環(huán)中放置了 emit 函數(shù)。但是 emit 不會將我的計時器數(shù)據(jù)發(fā)送給客戶端。這是我的 python 服務(wù)器端代碼:from flask import Flask,render_template,render_template_stringfrom flask_socketio import SocketIO, emitapp = Flask(__name__) app.config['SECRET KEY'] = 'random'socketio = SocketIO(app)@app.route('/') def index():    return render_template('index.html')@socketio.on('test_timer')def Timer(seconds=3600):    def hms(seconds): # hour minute second function        h = seconds // 3600        m = seconds % 3600 // 60        s = seconds % 3600 % 60        return '{:02d}:{:02d}:{:02d}'.format(h, m, s)    for i in range(seconds):        emit(hms(seconds-i),broadcast=True)        emit.sleep(1)if __name__ == '__main__':    socketio.run(app,debug=True)這是我的客戶端 javascript 代碼:<!DOCTYPE html><html>    <body>        <script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js" integrity="sha256-yr4fRk/GU1ehYJPAs8P4JlTgu0Hdsp4ZKrx8bDEDC3I=" crossorigin="anonymous"></script>        <script type="text/javascript" charset="utf-8">            var socket = io().connect('http://127.0.0.1:5000');            socket.on('test_timer', function(receiving_data) {            console.log(receiving_data);            });        </script>    </body></html>即使我運行服務(wù)器,console.log 也不會在客戶端打印任何計時器數(shù)據(jù)。
查看完整描述

1 回答

?
ITMISS

TA貢獻1871條經(jīng)驗 獲得超8個贊

下面幾行顯示了 emit 函數(shù)的簽名


   def emit(self, event, data=None, room=None, include_self=True,

             namespace=None, callback=None):

在您的 Flask 應(yīng)用程序中,您有一個注冊test_timer事件的處理程序。在此處理程序中,您需要發(fā)出一個響應(yīng)事件,后跟data而不僅僅是data。例如,


@socketio.on('test_timer')

def Timer(seconds=3600):

    def hms(seconds): # hour minute second function

        h = seconds // 3600

        m = seconds % 3600 // 60

        s = seconds % 3600 % 60

        return '{:02d}:{:02d}:{:02d}'.format(h, m, s)


    for i in range(seconds):

        emit('test_timer_reply', hms(seconds-i),broadcast=True)

        socketio.sleep(1)

在您的客戶端代碼中,您還需要為 發(fā)出test_timer并注冊一個偵聽器test_timer_reply。


var socket = io().connect('http://127.0.0.1:5000');

socket.emit('test_timer')

socket.on('test_timer_reply', function(receiving_data) {

  console.log(receiving_data);

});


查看完整回答
反對 回復(fù) 2022-12-02
  • 1 回答
  • 0 關(guān)注
  • 318 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號