Flask-SocketIO 项目地址:https://github.com/miguelgrinberg/Flask-SocketIO/


服务器端程序

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('my event', namespace='/test'))
def test_message(message):
    emit('my response', {'data': 'got it!'})

@socketio.on('my broadcast event', namespace='/test')
def test_message(message):
    emit('my response', {'data': message['data']}, broadcast=True)

@socketio.on('connect', namespace='/test')
def test_connect():
    emit('my response', {'data': 'Connected'})

@socketio.on('disconnect', namespace='/test')
def test_disconnect():
    print('Client disconnected')

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

客户端程序

$(document).ready(function(){
    let namespace = '/test';
    let socket = io.connect(location.protocol + '//' + document.domain + ':' + location.port + namespace);
    socket.on('my response', function(msg) {
        console.debug('data receive', msg);
        $('#log').append('<p>Received: ' + msg.data + '</p>');
    });
    $('form#emit').submit(function(event) {
        console.debug('my event');
        socket.emit('my event', {data: $('#emit_data').val()});
        return false;
    });
    $('form#broadcast').submit(function(event) {
        console.debug('my broadcast event');
        socket.emit('my broadcast event', {data: $('#broadcast_data').val()});
        return false;
    });
});

参考文档:

https://blog.csdn.net/weixin_36380516/article/details/80418354
https://blog.csdn.net/u013793383/article/details/72848252

发表评论