Websocket 向服务器发送数据时出现Python Flask Socketio BadNamespace错误

Websocket 向服务器发送数据时出现Python Flask Socketio BadNamespace错误,websocket,socket.io,python-3.6,flask-socketio,Websocket,Socket.io,Python 3.6,Flask Socketio,我正试图从客户端向服务器发送数据,但收到错误的命名空间错误 我搜索了错误,但没有找到任何解决方案。。。 谁能指出我犯了什么错误 服务器端(app.py) 客户端(client.py) 错误 Attempting polling connection to http://127.0.0.1:5000/socket.io/?transport=polling&EIO=4 Polling connection accepted with {'sid': '1ipsM7udDVMj0WdKAAA

我正试图从客户端向服务器发送数据,但收到错误的命名空间错误

我搜索了错误,但没有找到任何解决方案。。。 谁能指出我犯了什么错误

服务器端(app.py)

客户端(client.py)

错误

Attempting polling connection to http://127.0.0.1:5000/socket.io/?transport=polling&EIO=4
Polling connection accepted with {'sid': '1ipsM7udDVMj0WdKAAAA', 'upgrades': ['websocket'], 'pingTimeout': 5000, 'pingInterval': 25000}
Sending packet MESSAGE data 0
Attempting WebSocket upgrade to ws://127.0.0.1:5000/socket.io/?transport=websocket&EIO=4
WebSocket upgrade was successful
Traceback (most recent call last):
  File "client.py", line 41, in <module>
    sio.emit('userdata', data , namespace='/test')
  File "/home/amit/anaconda3/envs/ANPR/lib/python3.6/site-packages/socketio/client.py", line 329, in emit
    namespace + ' is not a connected namespace.')
socketio.exceptions.BadNamespaceError: /test is not a connected namespace.
Received packet NOOP data 
正在尝试轮询到的连接http://127.0.0.1:5000/socket.io/?transport=polling&EIO=4
已接受使用{'sid':'1ipsM7udDVMj0WdKAAAA','upgrades':['websocket'],'pingTimeout':5000,'pingInterval':25000}的轮询连接
正在发送数据包消息数据0
正在尝试将WebSocket升级到ws://127.0.0.1:5000/socket.io/?transport=WebSocket&EIO=4
WebSocket升级成功
回溯(最近一次呼叫最后一次):
文件“client.py”,第41行,在
发出('userdata',data,命名空间='/test')
文件“/home/amit/anaconda3/envs/ANPR/lib/python3.6/site packages/socketio/client.py”,第329行,在emit中
命名空间+'不是已连接的命名空间。“)
socketio.exceptions.BadNamespaceError:/test不是连接的命名空间。
接收到的数据包NOOP数据
烧瓶和socketio版本

python socketio==5.0.4 python engineio==4.0.0 Flask==1.0.2 烧瓶承口==5.0.1


我通过在服务器中调用
connect
处理程序实现了这一点

@socket_app.on('connect', namespace='/test')
def test_connect():
    print("connected")
    emit('connect_custom', {'data': 'Connected'})
然后发送到客户端的
connect\u自定义
处理程序

@sio.on('connect_custom', namespace='/test')
def on_connect(data):
    print('client contacted by server')
    print(data)
    data = {}
    data['name'] = 'Mark'
    sio.emit('userdata', data, namespace='/test')

sio.connect('http://127.0.0.1:5000')

看起来OP解决了他们自己的问题,但是当连接到非默认名称空间时,您可以在客户端连接中指定它:

sio.connect('http://127.0.0.1:5000,名称空间=['/test'])

@socket_app.on('connect', namespace='/test')
def test_connect():
    print("connected")
    emit('connect_custom', {'data': 'Connected'})
@sio.on('connect_custom', namespace='/test')
def on_connect(data):
    print('client contacted by server')
    print(data)
    data = {}
    data['name'] = 'Mark'
    sio.emit('userdata', data, namespace='/test')

sio.connect('http://127.0.0.1:5000')