【发布时间】:2014-09-06 21:29:00
【问题描述】:
我正在使用 Flask-socketio (http://flask-socketio.readthedocs.org/en/latest/)。
我目前正在获得一个
KeyError: '/local'
在 events.py 中使用它时。注意不同的命名空间:
@socketio.on('connect', namespace='/photo')
def client_connect():
emit('event', { 'type': 'client_connect' }, namespace='/local')
使用 Flask-socketio 是否可以将事件发生在单独的命名空间中?文档似乎是这样建议的,但我无法弄清楚为什么我不断收到 KeyError。
编辑:感谢@Miguel 提出的答案,我再次尝试(离开该项目很长时间后)但仍然遇到以下问题:
@socketio.on('connect', namespace='/local')
def local_client_connect():
print ('Local client connected.')
@socketio.on('connect', namespace='/photo')
def client_connect():
print ('Client connected.')
send('client_connect', namespace='/local')
当我运行应用程序时,我看到打印的“本地客户端已连接”。只有这样我才允许客户端访问 /photo 路由。我看到打印了“客户端已连接”,然后当然是 keyerror。
我已将 flask-socketio 升级到 0.4.2。
最好的
安德鲁
【问题讨论】:
-
你有没有找到任何解决方案,或者想出在这种情况下该怎么做?谢谢。
-
我想我最终在 node.js 中构建了整个东西!所以恐怕不会。
-
你是如何在nodejs socketio中实现的??上面的例子有用吗??
-
这是很久以前的事了,但使用的是 socket.io,我认为是发送给单个客户端。您还可以将客户放在“房间”中并仅向该房间广播。查看 socket.io 网站,它有一些很好的例子。
-
你为什么选择回到 nodejs?您在这里遇到的所有复杂问题是什么?
标签: python flask socket.io gevent-socketio