gpt4 book ai didi

Javascript 客户端不会持续监听 Flask-SocketIO

转载 作者:行者123 更新时间:2023-11-30 14:40:53 25 4
gpt4 key购买 nike

我正在使用 Flask-SocketIO 学习 websockets。目标是让我的 div 每秒连续填充一个随机数。当我运行下面的代码时,只出现最后一个数字。然而,在控制台中,我看到所有这些都同时到达。

<script type="text/javascript" src="//code.jquery.com/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.6/socket.io.min.js"></script>
<script type="text/javascript" charset="utf-8">

var socket = io.connect('http://' + document.domain + ':' + location.port + namespace);

socket.on('pony_update', function(msg){
console.log("pony update");
console.log(msg);
$('#ponies').html(msg.data);
});

更新这个div

<div id="ponies"></div>

“ Controller ”方法是

@socketio.on('the_ponies', namespace='/test')
def run_numbers(message):
for i in range(5):
time.sleep(1)
x = random.random()
emit('pony_update', {'data': x}, broadcast=True)

最佳答案

它阻塞在线程中。尝试使用 <a href="https://flask-socketio.readthedocs.io/en/latest/#flask_socketio.SocketIO.start_background_task" rel="noreferrer noopener nofollow">start_background_task</a>使用 gevent monkey_patch

@socketio.on('pony_update', namespace='/chat')
def run_numbers(message):
@copy_current_request_context
def back_work():
print('start')
for i in range(5):
time.sleep(1)
x = random.random()
print(x)
emit('my response', {'data': x}, broadcast=True)
socketio.start_background_task(target=back_work)

请不要忘记将猴子补丁放在文件顶部。 :)

关于Javascript 客户端不会持续监听 Flask-SocketIO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49673258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com