繁体   English   中英

Flask-socketio,将事件发送到另一个名称空间

[英]Flask-socketio, emit an event to another namespace

我正在使用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并能够向其发出消息。

我遇到了同样的问题,并像这样解决了。

@socketio.on('connect', namespace='/photo')
def client_connect():
    socketio.emit('event', { 'type': 'client_connect' }, namespace='/local')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM