栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Flask-SocketIO

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Flask-SocketIO

什么是websocket
WebSocket是一种网络通讯协议,
与HTTP不同的是,WebSocket提供全双工通信。
也就是说,传统的方式,只有当客户端发起请求后,服务器端才会发送数据,
而WebSocket可以让服务器主动发送数据给客户端,它是服务器推送技术的一种。

下图是WebSocket和HTTP的区别

pip install flask-socketio

参考网址:

https://flask-socketio.readthedocs.io/en/latest/api.html
https://blog.csdn.net/y472360651/article/details/116545273
https://blog.csdn.net/ieeso/article/details/105040207
https://xugaoxiang.com/2020/10/08/flask-19-socketio/

send 和 emit区别
send发送的是无命名的数据,而emit是发送有命名的数据,个人建议是emit

简单使用
on是注册接收前端消息的方法,message是指接收的信息的名称,和前端对应。
namespace是指一类的消息,和前端对应。
emit是指向前端发送消息,对应的消息的名称、数据和namespace。

默认的两个事件,connect和disconnect,当websocket连接成功和失败时,自动触发这两个事件。

namespace  命名空间



    
    SocketIO Demo
    
    



Demo of SocketIO

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

# pip install flask-socketio

app = Flask(__name__)
# app.config['SECRET_KEY'] = 'secret_key'

socketio = SocketIO()
socketio.init_app(app, cors_allowed_origins='*')
# socketio.init_app(app, cors_allowed_origins='http://localhost')

name_space = '/dcenter'

@app.route('/123')
def hello():
    # How can I send a WebSocket message from here?
    return 'Hello World!'


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

@app.route('/push')
def push_once():
    event_name = 'dcenter'
    broadcasted_data = {"type":"delete","user_id":"123","data":"1111111111111"}
    socketio.emit(event_name, broadcasted_data, broadcast=False, namespace=name_space)
    return 'done!'

@socketio.on('connect', namespace=name_space)
def connected_msg():
    print('client connected.')

@socketio.on('disconnect', namespace=name_space)
def disconnect_msg():
    print('client disconnected.')

@socketio.on('my_event', namespace=name_space)
def mtest_message(message):
    print(message)
    emit('my_response',
         {'data': message['data'], 'count': 1})

if __name__ == '__main__':
    # app.run(host='0.0.0.0', port=5000, debug=True)
    socketio.run(app, host='0.0.0.0', port=5000, debug=True)
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/864780.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号