Flask Socketio页面需要每次刷新以发出消息

时间:2019-01-23 02:38:40

标签: javascript python python-3.x socket.io flask-socketio

所以我有一个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服务器端调用了硒进程。
-正在进行一些处理,入侵会登录到网站并与分页一起获取数据。
-结果存储在变量中,然后服务器将结果发送回客户端。
-在客户端,结果显示在控制台上。
-因此,这种情况只会发生一次,如果我再次点击“单击我”按钮而没有刷新,同样会启动该过程,则将提取数据并将其存储在变量中,但是这次的“发射”功能不会由于某种原因而工作。

所以我的问题是,即使我不刷新页面,也会发出多次(在函数返回数据之后)的工作?

0 个答案:

没有答案