簡體   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