我有一个名为tst的Python变量,它等于2
。我想使用SocketIO将这个变量的值发送到我的前端。
代码正在运行,唯一的问题是,每次发送更新时,它都将用two
填充数组,而不是在我的javascript数组中存储单个2
。 javascript数组应该看起来像这样[2]
(我将发送其他值,这只是一个测试),但是看起来像这样
[2, 2, 2, 2, 2, 2, ........ 2]
有没有办法解决这个问题?
SocketIO:
class RandomThread(Thread):
def __init__(self):
self.delay = 1
super(RandomThread, self).__init__()
def randomNumberGenerator(self):
"""
Generate a random number every 1 second and emit to a socketio instance (broadcast)
Ideally to be run in a separate thread?
"""
#infinite loop of magical random numbers
print("Making random numbers")
while not thread_stop_event.isSet():
number = round(random()*10, 3)
tst = 2
print(number)
socketio.emit('newnumber', {'number': number}, namespace='/test')
socketio.emit('two', {'num': tst}, namespace='/test')
sleep(self.delay)
def run(self):
self.randomNumberGenerator()
application.js
socket.on('two', function(msg) {
console.log("Received" + msg.num);
arr.push(msg.num)
console.log(arr);
});
答案 0 :(得分:1)
您的数组正在填充,因为您的Python代码在循环中发送了那两个,而您的客户端代码将其附加(pushes)到数组中。您必须清除数组或在函数范围内对其进行定义。但是我不知道为什么要在数组中使用单个数字。如果您希望每秒从服务器获得一个随机数,那么一个变量就足够了。另一方面,如果您需要一个随机数数组,则最好在服务器端准备它,然后通过套接字发送整个内容。我感觉是XY problem。