ggj*_*ono 2 python python-3.x python-socketio
大家好,我有以下代码,但由于某种原因,我不断收到以下错误,但它似乎可以在同事的电脑上运行。我们似乎无法弄清楚为什么这对我的不起作用。
我们还仔细检查了我们是否使用 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)
Run Code Online (Sandbox Code Playgroud)
Socket.IO 连接涉及客户端和服务器之间的多次交换。该connect()函数启动此过程,但这在后台继续进行。当调用事件的处理程序时,连接结束connect。此时就可以发射了。
您的代码的问题是您没有等到连接握手完成,因此您的emit()调用是在建立连接之前发生的。解决方案是添加一个connect事件处理程序,并将您的emit()调用移至那里。
作为附加说明,我建议您在调用该函数之前设置事件处理connect()程序。
| 归档时间: |
|
| 查看次数: |
3796 次 |
| 最近记录: |