I have written a small case using socketIo, and I would like to ask why an error is reported here. I tried to send a message back to the server after the client received the message, but I got an error
File "D:\pyCode\miaosuyun-service\venv\Lib\site-packages\socketio\client.py", line 393, in emit
raise exceptions.BadNamespaceError(
socketio.exceptions.BadNamespaceError: / is not a connected namespace.
The last statement of the queryInfo method returns an error
service
import hashlib
import json
import time
from hashlib import md5
from threading import Thread
import eventlet
eventlet.monkey_patch()
import socketio
import eventlet.wsgi
sio = socketio.Server(async_mode='eventlet', cors_allowed_origins='*') # 指明在evenlet模式下
@sio.event
def connect(sid, environ):
sid_ls.update({sid: {
'data': []
}})
Thread(target=hello).start()
print(f"connect, sid={sid}, environ={environ}")
@sio.event
def disconnect(sid):
print(f"{sid}断开")
del sid_ls[sid]
pass
@sio.event
def response(sid, data):
print(f'{sid}响应的数据:', data)
def hello(data=None):
data = {'courseUsername': 'test'}
print('server receive:', data)
client = list(sid_ls.keys())[0]
extract_data = {
'query_data': data,
'md5': hashlib.md5(json.dumps(data).encode(encoding='utf-8')).hexdigest(),
"response": None
}
sid_ls[client]['data'].append(extract_data)
sio.emit(event='queryInfo', data=json.dumps(extract_data), to=client, namespace='/')
app = socketio.Middleware(sio)
eventlet.wsgi.server(eventlet.listen(('', 8866)), app,)
client
import json
import socketio
sio = socketio.Client()
@sio.event
def connect():
print(f"client connect")
sio.emit('client', {'foo': 'bar'})
@sio.event
def disconnect():
print('disconnected from server')
sio.disconnect()
@sio.event
def queryInfo(query):
print(f'查询的数据:', query)
query_json = json.loads(query)
### ERROR #####
sio.emit('client', {"md5": query_json['md5'], "response": {"courseData": [{'courseName': '今日的日本'}]}})
sio.connect('http://localhost:8866')
sio.wait()
I have written a small case using socketIo, and I would like to ask why an error is reported here. I tried to send a message back to the server after the client received the message, but I got an error
The last statement of the queryInfo method returns an error