大家好,我有下面的代码,但出于某种原因,我不断得到以下错误,但它似乎在同事的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)
IO连接涉及客户端和服务器之间的大量交换。
connect()
函数启动此过程,但此过程在后台继续。当调用connect
事件的处理程序时,连接结束。此时可以发射代码的问题在于,您没有等待连接握手完成,因此
emit()
调用发生在建立连接之前。解决方案是添加一个connect
事件处理程序,并将emit()
调用移动到那里另外,我建议您在调用
connect()
函数之前设置事件处理程序相关问题 更多 >
编程相关推荐