Skip to content

What's the problem? Help! #1208

@RavenCri

Description

@RavenCri

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()

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions