flask-socketio的connect中,在connect函数中添加一个事件监听器,监听全局变量a的变化,但不能主动改变a的值,当a发生变化时,都发送一条消息
时间: 2023-09-12 09:07:43 浏览: 61
可以这样写:
```python
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
# 初始化全局变量a
a = 0
@socketio.on('connect')
def test_connect():
# 在连接成功后,监听名为 'a_changed' 的事件
@socketio.on('a_changed')
def handle_a_change():
# 当 a 发生变化时,将 a 的值和一个消息一起发送给客户端
emit('a_value', {'value': a, 'message': 'a has changed!'})
# 发送 a 的初始值给客户端
emit('a_value', {'value': a})
if __name__ == '__main__':
socketio.run(app)
```
在这个例子中,我们在 `connect` 事件处理函数中,添加了一个名为 `handle_a_change` 的事件监听器,来监听全局变量 `a` 是否发生变化。当客户端连接到服务器时,服务器会将 `a` 的初始值发送给客户端,并开始监听 `a_changed` 事件。当客户端想要改变 `a` 的值时,它必须通过发送 `a_changed` 事件来告诉服务器。服务器收到 `a_changed` 事件后,会立即将 `a` 的当前值和一个消息一起发送给客户端。请注意,这个例子中的 `a` 是一个全局变量,因此它可以从任何地方进行更改,但是客户端无法直接更改它,因为它只能通过发送事件的方式来告诉服务器。
阅读全文