所以我有一个Python socketio脚本,该脚本登录到网站上进行一些处理,然后将结果存储到变量中。此硒过程是在用户单击前端按钮时触发的函数中定义的。我所做的一小段内容发布在下面:
from flask import Flask, render_template
from flask_socketio import SocketIO
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
def selenium_process(data):
(Some process that involves selenium)
values = stores the result
..
..
..
return values
@socketio.on('message')
def handle_message(message):
dataval = selenium_process(data)
socketio.emit('showresult',dataval)
if __name__ == '__main__':
socketio.run(app,host='my_ip',port=random_port)
这是充当客户端的html + js文件的示例:
<html>
<head>
<script src='http://code.jquery.com/jquery-1.7.2.min.js'></script>
<script src='http://localhost:3001/socket.io/socket.io.js'></script>
<script>
<button onclick="myFunction()">Click me</button>
var socket = io.connect('http://localhost:3001');
function myFunction()
{
data = {}
socket.emit('message',data);
}
socket.on('showresult') {
console.log(data);
});
</script>
</head>
</html>
虽然代码工作正常,但是当硒处理完成时,从python服务器返回的结果仅一次发送回js客户端。此后,我需要手动刷新网页,然后发出以获取前端消息。
我犯什么错误?
编辑:
流程:
-我在js客户端上点击了“点击我”按钮,该按钮在python服务器端调用了硒进程。
-正在进行一些处理,入侵会登录到网站并与分页一起获取数据。
-结果存储在变量中,然后服务器将结果发送回客户端。
-在客户端,结果显示在控制台上。
-因此,这种情况只会发生一次,如果我再次点击“单击我”按钮而没有刷新,同样会启动该过程,则将提取数据并将其存储在变量中,但是这次的“发射”功能不会由于某种原因而工作。
所以我的问题是,即使我不刷新页面,也会发出多次(在函数返回数据之后)的工作?