roo*_*ams 5 python flask socket.io gevent-socketio
我正在使用 Flask-socketio ( http://flask-socketio.readthedocs.org/en/latest/ )。
我目前正在得到一个
KeyError: '/local'
Run Code Online (Sandbox Code Playgroud)
在 events.py 中使用它时。注意不同的命名空间:
@socketio.on('connect', namespace='/photo')
def client_connect():
emit('event', { 'type': 'client_connect' }, namespace='/local')
Run Code Online (Sandbox Code Playgroud)
使用 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')
Run Code Online (Sandbox Code Playgroud)
当我运行该应用程序时,我看到打印的“本地客户端已连接”。只有这样我才允许客户端访问 /photo 路由。我看到打印了“客户端已连接”,当然还有密钥错误。
我已经将flask-socketio升级到0.4.2。
最好的
安德鲁
您需要在第二个命名空间上至少有一个处理程序。例如:
@socketio.on('connect', namespace='/local')
def local_client_connect():
pass
Run Code Online (Sandbox Code Playgroud)
然后 Flask-SocketIO 将了解/local并能够向其发送消息。
小智 5
我有同样的问题并这样解决。
@socketio.on('connect', namespace='/photo')
def client_connect():
socketio.emit('event', { 'type': 'client_connect' }, namespace='/local')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9724 次 |
| 最近记录: |