【发布时间】:2013-12-11 12:46:38
【问题描述】:
我想在服务器发生某个事件时使用 SocketIO 广播消息,现在我使用此代码
我在启动服务器时调用gevent.spawn(loop_send_queued_messages, server)
当客户端向“/emit”发送数据时,一切正常:
- 我看到来自
broadcast的broadcasting消息 - 我看到来自
broadcast_msg的broadcast_msg消息
但是,如果我在服务器的另一部分导入 broadcast 函数并从某个端点使用它(例如在用户发送文件之后),我只会看到来自调用的第一条 broadcasting 消息broadcast,但似乎消息未正确添加到队列中,因为从未调用过 broadcast_msg
有人能告诉我使用 Flask 中的 SocketIO 从我的服务器代码中的任何位置进行广播的最佳方式吗?
[编辑] 考虑到下面的评论,我有这个
broadcasting newDatasetAvailable features 4363892432 scripts.socket_routes
127.0.0.1 - - [2013-12-11 15:56:07] "POST /datastore/features HTTP/1.1" 200 115 0.003130
broadcasting msg refreshData 4363648208 socket_routes
127.0.0.1 - - [2013-12-11 15:56:07] "POST /emit HTTP/1.1" 200 115 0.000540
broadcast_msg msg (u'refreshData',)
所以一个是scripts.socket_routes,另一个是socket_routes
/emit 端点与websocket_queue 在同一个文件中定义,POST 到/datastore 使用另一个文件中的broadcast 方法,并像这样导入它:
from scripts.socket_routes import broadcast
结构在哪里:
scripts/
__init__.py
socket_routes.py # where websocket_queue and broadcast are defined
dataset_routes.py # where broadcast is imported
【问题讨论】:
标签: python websocket socket.io flask