Python 已建立Flask socketIO连接,但未路由
对于我的项目,我必须将一个socketIO后端连接到另一个后端。为此,我使用Flask socketio和socketio客户端。两者的代码如下所示:Python 已建立Flask socketIO连接,但未路由,python,flask,socket.io,Python,Flask,Socket.io,对于我的项目,我必须将一个socketIO后端连接到另一个后端。为此,我使用Flask socketio和socketio客户端。两者的代码如下所示: (4743) accepted ('192.168.1.33', 53500) 192.168.1.33 - - [21/Oct/2020 15:48:31] "GET /socket.io/?EIO=3&transport=polling&t=1603291711742-0 HTTP/1.1" 200 371
(4743) accepted ('192.168.1.33', 53500)
192.168.1.33 - - [21/Oct/2020 15:48:31] "GET /socket.io/?EIO=3&transport=polling&t=1603291711742-0 HTTP/1.1" 200 371 0.005033
(4743) accepted ('192.168.1.33', 53502)
客户:
从socketIO_客户端导入socketIO,LoggingNamespace
ip='192.168.1.41'
端口=8090
def句柄_aaa_响应():
打印('响应')
socketIO=socketIO(ip,端口)
socketIO.on('pingSuccess',on_aaa_响应)
socketIO.wait(秒=1)
服务器:
从烧瓶导入烧瓶,呈现_模板,jsonify,响应
从flask_socketio导入socketio,发射
TRACE_库=False
主机='0.0.0.0'
WEB_端口=8090
使用_PIN=False
def handle_connect():
打印('hello world')
发出('pingSuccess')
app=烧瓶(名称)
app.config['SECRET\u KEY']='SECRET!'
app.config['DEBUG']=True
socketio=socketio(应用程序,允许的cors_来源=“*”)
socketio.on('connect',handle\u connect)
尝试:
socketio.run(应用程序,
主机=主机,
端口=WEB\u端口,
日志(输出=真)
除键盘中断外:
打印(“***用户启动键盘中断”)
退出()
运行客户端和服务器时,服务器仅记录以下内容:
(4743) accepted ('192.168.1.33', 53500)
192.168.1.33 - - [21/Oct/2020 15:48:31] "GET /socket.io/?EIO=3&transport=polling&t=1603291711742-0 HTTP/1.1" 200 371 0.005033
(4743) accepted ('192.168.1.33', 53502)
这意味着服务器正在接受来自客户端的连接,但没有路由到服务器上的正确路由
我想知道如何改变它,使它能够进入正确的路径并打印“hello world:与
socketio.on()
相反,从您在client
脚本中使用的常规socketio\u client
包中,flask\u socketio
使用.on()
因此,要将回调添加到flask\u socketio
中的事件,您需要更改以下内容:
(4743) accepted ('192.168.1.33', 53500)
192.168.1.33 - - [21/Oct/2020 15:48:31] "GET /socket.io/?EIO=3&transport=polling&t=1603291711742-0 HTTP/1.1" 200 371 0.005033
(4743) accepted ('192.168.1.33', 53502)
。。。
socketio=socketio(应用程序,允许的cors_来源=“*”)
@socketio.on('connect')
def handle_connect():
打印('hello world')
发出('pingSuccess')
...
服务器端
@socketio.on('connect')
def test_connect():
print('hello world')
emit('pingSuccess')
接受这个答案,因为它解释了为什么我的代码是错误的,以及如何正确执行。干杯。