当前位置:   article > 正文

flask同时实现http和websocket_flask websocket 支持

flask websocket 支持

两种协议在一个工程中实现

服务端

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

app = Flask(__name__)
socketio = SocketIO(app)


@socketio.on('server')
def endpoint_socket(data):
    print(f'客户端发送来的消息:{data}')
    emit('client', {'message': 'I am server'})


@app.route("/http/", methods=["GET", "POST"])
def endpoint_http():
    print('调用http')
    return Response('I am server')


socketio.run(app, host="0.0.0.0", port=8000, debug=True)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

通过flask_socketio提供的SocketIO封装flask的app实现了websocket,同时不影响flask的http接口。

客户端

import time

import socketio

num = 1

sio = socketio.Client()


@sio.on('client')
def on_message(data):
    global num
    print(f'第{num}次发送')
    num += 1
    time.sleep(1)
    print('client received a message!', data)
    sio.emit('server', {'message': 'who are you', 'session_id': ''})


@sio.event
def connect_error(info):
    print(f"The connection failed: {info}")


@sio.event
def disconnect():
    print('disconnected from server')


sio.connect('http://localhost:8000')
sio.emit('server', {'message': 'I am client'})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/280134
推荐阅读
相关标签
  

闽ICP备14008679号