欢迎访问宙启技术站
智能推送

Flask-SocketIO中disconnect()方法的用法和示例

发布时间:2023-12-16 06:22:10

Flask-SocketIO是一个用于构建基于WebSocket的实时应用程序的插件。其中,disconnect()方法用于断开与客户端的连接。

disconnect()方法的语法如下:

disconnect(close=None)

该方法的参数close用于指定客户端断开连接后是否关闭连接。默认情况下,关闭连接是可选的。

下面是一个使用disconnect()方法的示例:

from flask import Flask, render_template
from flask_socketio import SocketIO, emit

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

@app.route('/')
def index():
    return render_template('index.html')

@socketio.on('connect')
def test_connect():
    print('Client connected')

@socketio.on('disconnect')
def test_disconnect():
    print('Client disconnected')

if __name__ == '__main__':
    socketio.run(app)

这个示例中,定义了一个基于Flask-SocketIO的简单服务器。在客户端连接上时,test_connect()方法将被调用,打印出"Client connected";而在客户端断开连接时,test_disconnnect()方法将被调用,打印出"Client disconnected"。

除了上述的打印输出,我们还可以通过SocketIO的emit()方法向特定客户端发送消息。例如,在test_disconnect()方法中,我们可以通过emit('message', 'Client disconnected')来告知客户端断开连接的消息。

from flask import Flask, render_template
from flask_socketio import SocketIO, emit

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

@app.route('/')
def index():
    return render_template('index.html')

@socketio.on('connect')
def test_connect():
    print('Client connected')

@socketio.on('disconnect')
def test_disconnect():
    emit('message', 'Client disconnected')
    print('Client disconnected')

if __name__ == '__main__':
    socketio.run(app)

可以在客户端的JavaScript代码中使用SocketIO的on()方法来监听message事件,并在事件发生时进行处理。

<script src="https://cdn.socket.io/socket.io-3.1.0.min.js"></script>
<script type="text/javascript">
    var socket = io();
    socket.on('message', function(msg) {
        console.log(msg);
    });
</script>

以上就是Flask-SocketIO中disconnect()方法的用法和示例。通过这个示例,我们可以了解到disconnect()方法用于断开与客户端的连接并发送事件。