一台设备上出现Python socketio badnamespaceerror异常,但另一台设备不工作

2024-06-26 08:23:19 发布

您现在位置:Python中文网/ 问答频道 /正文

大家好,我有下面的代码,但出于某种原因,我不断得到以下错误,但它似乎在同事的pc上工作。我们似乎无法找出为什么这在我的电脑上不起作用

我们还仔细检查了是否正在使用dir()导入相同的socketio

我尝试在sio.connect和sio.emit中指定名称空间,但仍然没有成功

socketio.exceptions.BadNamespaceError: / is not a connected namespace.

bearerToken = 'REDACT'

core = 'REDACT'
output = 'REDACT'


import socketio
import json

def getListeners(token, coreUrl, outputId):
    sio = socketio.Client(reconnection_attempts=5, request_timeout=5)
    sio.connect(url=coreUrl, transports='websocket')

    @sio.on('mwedge:batch:stats')
    def batchStats(data):
        if (outputId in data['outputStats']):
            listeners = data['outputStats'][outputId][16]
            print("Number of listeners ", len(listeners))
            ips = []
            for listener in listeners:
                ips.append(listener[1])
            print("Ips", ips)

    def authCallback(data):
        print(json.dumps(data))

    sio.emit(event='auth',
    data={
        'token': token
    },
    callback=authCallback)


getListeners(bearerToken, core, output)

Tags: coretokenoutputdatadefconnectprintsocketio
1条回答
网友
1楼 · 发布于 2024-06-26 08:23:19

IO连接涉及客户端和服务器之间的大量交换。connect()函数启动此过程,但此过程在后台继续。当调用connect事件的处理程序时,连接结束。此时可以发射

代码的问题在于,您没有等待连接握手完成,因此emit()调用发生在建立连接之前。解决方案是添加一个connect事件处理程序,并将emit()调用移动到那里

另外,我建议您在调用connect()函数之前设置事件处理程序

相关问题 更多 >