Python Socketio服务器需要刷新才能发出

时间:2019-01-23 17:37:05

标签: javascript python socket.io

我写了一个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客户端一次。此后,我需要手动刷新网页,然后发出以在前端获取消息。 我犯什么错误?

0 个答案:

没有答案