【发布时间】:2021-09-21 03:11:02
【问题描述】:
使用 python socketio 包,我创建了一个计时器,它在客户端连接到我的服务器时启动。
服务器端代码:
import socketio
sio = socketio.Server()
app = socketio.WSGIApp(sio, static_files={
'/': './public/'
})
@sio.event
def connect(sid, environ):
count = 10
while count > 0:
sio.emit('timer_count', count)
sio.sleep(1)
count -= 1
供参考的HTML代码(index.html):
<!doctype html>
<html>
<head>
<title>Timer</title>
</head>
<body>
<h1>Timer Build</h1>
<p1 id="counter"></p1>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.1.2/socket.io.min.js"></script>
<script src="/index.js"></script>
</body>
</html>
客户端JS代码(index.js):
const sio = io();
sio.on('timer_count', function(count) {
console.log(count);
var s = document.getElementById("counter");
s.innerHTML = count;
});
但是,我得到的行为是数据不会发送到客户端,直到它看起来服务器端代码执行完毕(即一次打印全部计数)。如何让它以真正的计时器方式运行,其中 console.log() 函数每秒打印数据(计数)?
【问题讨论】:
标签: javascript python flask websocket python-socketio