python - Flask-socketio,向另一个命名空间发出事件

标签 python flask socket.io gevent-socketio

我正在使用 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 路由。我看到打印了“客户端已连接”,当然还有键盘错误。

我已经将 flask-socketio 升级到 0.4.2。

最佳

安德鲁

最佳答案

您需要在第二个命名空间上至少有一个处理程序。例如:

@socketio.on('connect', namespace='/local')
def local_client_connect():
    pass

然后 Flask-SocketIO 将知道 /local 并将能够向它发送消息。

关于python - Flask-socketio,向另一个命名空间发出事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24779320/

相关文章:

python - 动态添加字段到 WTForms 表单

javascript - rethinkdb 在 express 中更改 feed,其中 socket.io 显示 [object object]

node.js - 单击按钮触发 socket.emit

python - 在 pandas 中添加数据框的列时出现错误

python - Pygame 弹力球从地板下沉

python - 在后端实现 facebook 类型更简单的 'like' 功能

python - Flask + Flask-Security + Babel 不工作

python - 使用 python beautifulsoup 进行网页抓取但未获取值

Python/ flask 错误 : "ImportError: cannot import name _compare_digest"

php - 在其他端口上使用socket.io