Python使用flask框架与前端建立websocket链接,并进行数据交互

Python使用flask框架与前端建立websocket链接,并进行数据交互

后端采用的框架为flask,前端用的flask自带的html编写,实现的功能为:前后端建立websocket链接并进行数据交互

一、编写一个flask后端服务

常规创建方式就可以,创建一个flask服务。声明一个websocket实例,以websocket的方式启动这个服务。

  1. 安装相关依赖:
pip install flask
pip install flask_socketio
  1. 声明应用和websocket实例
from flask import Flask, request, render_template
from flask_socketio import SocketIO, emit

# 声明应用
app = Flask(__name__)

# 为通讯添加一个密钥
app.config['SECRET_KEY'] = 'secret_key'

# 创建websocket实例
my_socket = SocketIO(app)

  1. 项目目录下新建temlpates文件夹,然后文件夹里新建index.html文件,内容信息,我们稍后补充,先有这个东西就行。
    在这里插入图片描述
  2. 编写接口信息。编写接口信息的时候要添加websocket通讯的相关方法。

# 声明访问页面信息
@app.route('/')
def index():
	# 这里是进行了flask前端模板的渲染,文件就是我们上面建的那个,只写文件名称就可以,框架内部是默认访问temlpates目录的
    return render_template('index.html')

新建一个websocket推送接口,使用 emit() 方法推送信息到到前端。然后声明几个websocket建立过程中用到的方法。关于 emit() 的使用,后面讲。

# 数据推送接口,后面调这个接口模拟数据发送
@app.route('/send_msg', methods=['post'])
def receive_source():
    """
    推送数据
    :return:
    """
    try:
        my_socket.emit('date', request.json, namespace='/')
        return 'success'
    except Exception as e:
        log.error(f'数据处理错误:{
     str(e)}')
        return 'failed'

# 当websocket链接建立的时候,会调用这个
@my_socket.on('connect')
def handle_connect():
    print('WebSocket 链接已经建立')

# 关闭用
@my_socket.on('disconnect')
def handle_disconnect():
    print('WebSocket 链接已经关闭')

# 发送信息用
@my_socket.on('message')
def handle_message(data):
    emit('msg', data, namespace='/')

  1. 以websocket的方式启动服务(填写完后面的html代码后启动)
if __name__ 

最近更新

  1. TCP协议是安全的吗?

    2024-03-26 15:20:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-26 15:20:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-26 15:20:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-26 15:20:02       18 阅读

热门阅读

  1. gnuplot画图学习(待完善)

    2024-03-26 15:20:02       16 阅读
  2. 设计模式之观察者模式

    2024-03-26 15:20:02       19 阅读
  3. 服务器相关问题以及见解

    2024-03-26 15:20:02       16 阅读
  4. Ubuntu 安装教程

    2024-03-26 15:20:02       17 阅读
  5. 【C/C++】多项式求和

    2024-03-26 15:20:02       21 阅读
  6. 【学习心得】人工智能概念拾遗

    2024-03-26 15:20:02       17 阅读
  7. Modbus TCP协议介绍(ModbusTCP)

    2024-03-26 15:20:02       18 阅读
  8. Elasticsearch 基础之映射(mappping)

    2024-03-26 15:20:02       18 阅读
  9. 网络小基础

    2024-03-26 15:20:02       19 阅读