我写了一个Python socketio脚本和selenium一起登录网站进行一些处理,然后将结果存储在一个变量中。这个selenium进程是在用户单击前面的按钮时触发的函数中定义的结束。我所做的一小段内容发布在下面:
from aiohttp import web
import socketio
from eventlet.green import subprocess
import json
sio = socketio.AsyncServer()
app = web.Application()
sio.attach(app)
async def index(request):
with open('index.html') as f:
return web.Response(text=f.read(), content_type='text/html')
@sio.on('connect')
def connect(sid, environ):
print("connect ", sid)
def testforsel(data):
Some processing in python
..
return value
@sio.on('message')
async def message(sid, data):
response = testforsel(data)
print(response)
await sio.emit('showresult',response, room=sid)
app.router.add_get('/', index)
if __name__ == '__main__':
web.run_app(app)
这是 index.html :
<body>
<button onClick="sendMsg()">Hit Me</button>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js"></script>
<script>
const socket = io('');
function sendMsg()
{
msg = {}
socket.emit("message", msg);
}
socket.on('showresult', function (data)
{console.log(data);});
</script>
</body>
尽管代码工作正常,但是当硒处理完成时,来自python服务器的结果仅被发送回js客户端一次。此后,我需要手动刷新网页,然后发出以在前端获取消息。
我犯什么错误?