flask-socketio - 我可以在 socketio 上下文之外发出 Flask-SocketIO 消息吗?
问题描述
从我的 python 烧瓶网络服务器(烧瓶 socketio 服务器)发出的消息没有到达 javascript socketio 客户端。
在 socketio 上下文中,一切正常。
我已经阅读了这里有关该问题的所有主题......所以我包含了 monkey.patch,尝试将 eventlet 作为 async_mode 并添加了一些其他提示,所以我现在得到了以下代码库:
app = Flask(__name__)
app.secret_key = "zISMDCwvfJY2TXHMKHrB"
sio = SocketIO(app, async_mode='eventlet')
eventlet.monkey_patch()
@app.route('/index')
def index():
someotherfunction()
return render_template('index.html')
@sio.event
def my_event(message):
print(message)
@sio.event
def hello(message):
sio.emit('hello', {'data': 'got it!'})
print(message)
def someotherfunction():
with app.app_context():
sio.emit('hello', {'data': 'got it123123!'}, namespace='/')
if __name__ == "__main__":
sio.run(app, host="localhost", port="8080", debug=True)
这里是socketio客户端部分:
<script type="text/javascript" charset="utf-8">
var socket = io();
socket.on('connect', function()
{
socket.emit('my_event', {data: 'I\'m connected!'});
});
socket.on('hello', function(data)
{
console.log(data);
});
</script>
所以 'hello' 函数会在请求后成功发出数据,但 someotherfunction() 不会向客户端发出任何数据。
解决方案
推荐阅读
- java - 微服务架构中如何在微服务之间共享java模型
- scala - 在 play-ws 多部分请求中发送 json 部分
- r - R 函数的行为可以根据接收到的参数数量而改变吗?
- hyperledger-fabric - 错误:无法发送:EOF 实例化链码
- azure - DeliveryCount 在 Microsoft Azure ServiceBus 中随消息而增加
- javascript - JavascriptExecutor 的 executeScript() 方法的返回类型是什么?
- ios - 为什么在某些情况下视图的快照看起来可能会大两倍?
- php - 给用户 200 响应后执行 php 代码
- php - 服务器端处理 Datatables 分页 Microsoft SQL
- javascript - 无法从 Vue 方法获取 Ajax 结果到 data()s 返回的变量