flask-socketio初步使用!!!亲测可用

本文介绍如何使用 Flask-SocketIO 和 socket.io.js 实现简单的实时通信应用,包括环境配置、前后端代码示例及运行说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章存粹用来记录flask-socketio的使用

环境

  • python 3.7.2(之前一直用3.10,但无法运行成功,用3.7.2可以运行成功,其他版本应该也可以,只要不高于3.10)

所需依赖包(这些版本下是可运行)

bidict==0.22.0
click==8.1.3
dnspython==2.2.1
eventlet==0.33.1
Flask==2.2.2
Flask-SocketIO==5.2.0
greenlet==1.1.2
importlib-metadata==4.12.0
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.1
python-engineio==4.3.4
python-socketio==5.7.1
six==1.16.0
typing_extensions==4.3.0
Werkzeug==2.2.2
zipp==3.8.1

后端

app.py

# _*_ coding:utf-8 _*_
from flask import Flask, render_template
from flask_socketio import SocketIO, emit

app = Flask(__name__)
app.config['SECRET_KEY'] = 'D20fndvfMK27^313787-AQl131'

socketio = SocketIO()

socketio.init_app(app)

name_space = '/abcd'


@app.route('/abc')
def get_abc():
    """demo page"""
    return render_template('index.html')


@app.route('/push')
def push_once():
    """broadcast event generator"""
    event_name = 'abcde'
    broadcasted_data = {'data': "pushed once!"}
    socketio.emit(event_name, broadcasted_data, broadcast=True, namespace=name_space)
    return 'done!'


@socketio.on('connect', namespace=name_space)
def connected_msg():
    """socket client event - connected"""
    print('client connected!')


@socketio.on('disconnect', namespace=name_space)
def disconnect_msg():
    """socket client event - disconnected"""
    print('client disconnected!')


if __name__ == '__main__':
    socketio.run(app,port=5001,debug=True)


前端

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Socket Demo</title>
    <script type="text/javascript" src="//cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
    <script crossorigin="anonymous" integrity="sha512-2RDFHqfLZW8IhPRvQYmK9bTLfj/hddxGXQAred2wNZGkrKQkLGj8RCkXfRJPHlDerdHHIzTFaahq4s/P4V6Qig==" src="https://lib.baomitu.com/socket.io/3.1.3/socket.io.js"></script>
</head>
<body>

<h2>Demo of Socket BroadCast</h2>
<div id="t"></div>
<script>
$(document).ready(function () {
    namespace = '/abcd';
    var socket = io.connect(location.protocol + '//' + document.domain + ':' + location.port + namespace);
    socket.on('abcde', function (res) {
        var t = res.data;
        if (t) {
            $("#t").append(t).append('<br/>');
        }

    });
});
</script>
</body>
</html>

运行

python app.py

访问

http://12.0.0.1:5001/abc
在这里插入图片描述
后台会显示连接成功
在这里插入图片描述

服务端推送数据到前端

访问:http://127.0.0.1:5001/push
在这里插入图片描述
后端就会推送到前端显示
在这里插入图片描述

结束语

要注意flask-socketio和socket.io.js版本
后期将会更新 vue3 + flask-socketio

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值