您只想运行socketio.run(app, port=5005)
并点击端口5005上的REST API。
之所以起作用,是因为Flask-SocketIO在后台运行了一个基于gevent(或带有1.0版本,还有eventlet)的事件化Web服务器- 该服务器直接处理websocket请求(使用您通过socketio.on
装饰器注册的处理程序),正在将非websocket请求传递给Flask。
您的代码 无法 正常工作的原因是因为app.run
和socketio.run
都 阻塞了 操作。第一个运行的是循环播放,等待连接,决不允许第二个启动。如果确实 需要 在其他端口上运行Websocket连接,则需要run
在其他进程上生成socketio或应用程序调用。