首页
学习
活动
专区
圈层
工具
发布

Flask:使用SocketIO实现WebSocket与前端Vue进行实时推送(gevent-websocket、flask-socketio、flask不出现running on 127..问题)

前言 本文旨在记录使用Flask框架过程中与前端Vue对接过程中,存在WebSocket总是连接失败导致前端取不到数据的问题。...核心问题 需要着重注意的是,Flask框架中有原生的Websocket写法,也有对Websocket封装之后的依赖包SocketIO写法,所以在进行与前端对接的过程中,需要与前端对接好接口标准。...Flask的原生WebSocket(flask-sockets)与封装SocketIO Flask-Sockets和Flask-SocketIO之间的主要区别在于前者仅仅将WebSocket协议(通过使用...Flask-SocketIO则不同,它不仅实现了WebSocket协议,并且对于那些不支持WebSocket协议的旧版浏览器,使用它也能够实现相同的效果。新版旧版的浏览器都能使用他。...可以这么理解,flask把websocket功能封装在了socketio这个新的包里面。 另一个区别是Flask-SocketIO实现了SocketIO Javascript库公开的消息传递协议。

1.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Flask学习与实战11:WebSocket的使用与简单通信

    WebSocket协议 用这个协议最方便的就是,服务器主动向客户端推送信息。客户端也可以主动向服务器发送信息。属于应用层协议,在握手阶段还是使用了HTTP的协议。...1、安装Websocket 通过命令: pip install flask-socketio pip install websocket-gevent (第二条这条命令部分机子是需要的,有些环境不需要,...安装flask_socketio模块实现了Flask对websocket的封装,从而允许建立在flask上的应用的服务端和客户端建立全双工通信。...2、启动socketio的方式 原flask下是通过 app.run启动的,现在需要进一步封装flask。...一个namespace定义了一个后端的websocket连接接口,客户端和服务器通过三次握手建立socket连接后,连接不同的服务器接口,socket连接并不会断开。

    1.6K10

    干货 | 大语言模型插件功能在携程的python实践

    但与websocket不同的是,socketIO是一个第三方库,他具有websocket的基本功能,同时也增强了一些的功能。...socketIO服务连接时,可以在f12中看到连接的过程: 总共分为5步: 1)客户端发起握手请求(GET),服务端返回本次连接的前置基础信息 { "sid": "FSDjX-WRwSA4zTZMALqx...,使用socketIO实现异步交互,需要安装对应的库:flask_socketio,启动时,在flask的app上使用SocketIO包装一下即可,这样在同一个端口上同时开启了http服务和socketIO...服务,下面只展示基本关键代码: from flask import Flask from flask_socketio import SocketIO # flask原始 app web_app =...Flask(__name__, static_folder=Config.STATIC_PATH) # socketIO包装app socketio = SocketIO(web_app, cors_allowed_origins

    1K10

    后端Python3+Flask结合Socket.io配合前端Vue2.0实现简单全双工在线客服系统

    换句话说,当 Socket.IO 检测到当前环境不支持 WebSocket 时,能够自动地选择最佳的方式来实现网络的实时通信,这一点就比websocket要智能不少。    ...我们先进行后端服务的搭建 pip install flask pip install flask-cors pip install flask-socketio     分别安装Flask本地,跨域模块...,以及socketio模块     适当升级你的pip,注意版本不要过低,下面是本次demo的版本号 Flask 1.1.1 Flask-Cors...3.0.8 Flask-SocketIO 4.3.0 Flask-SQLAlchemy 2.4.1     随后我们简单写一个flask的入口启动文件 manage.py from...jsonify from flask_cors import CORS from flask_socketio import SocketIO,send,emit import urllib.parse

    2.1K20

    基于nginx搭建SocketIO集群

    这一节开头就提到了,如果要使用多节点做水平扩展的话,需要保证一个客户端只跟具体的某台SocketIO服务器维持连接,否则的话,在WebSocket协议握手阶段,会因为握手失败而无法正常建立连接。...这2个请求头都是HTTP协议升级到WebSocket协议的过程中会用到的。 接下来我们重启nginx服务器,再启动客户端。 以下是客户端控制台输出: ? 可以看到,现在客户端是成功建立连接了。...之前我们配置upstream块的时候,并没有明确指定具体的负载均衡策略,因此nginx使用的是默认的轮询策略,而由于WebSocket协议握手的过程中不是一步而就的,它分了几个步骤,如果说上一次是与服务器...1握手,下一次是与服务器2握手,那么肯定没法正常完成握手流程,连接也就没法正常建立了。...至于proxy_set_header这个配置,目的是将客户端在握手过程中的请求头传输给后端服务器,不过我试了将这个配置注释掉,发现也还是能正常建立连接的,在生产环境,建立还是把这个配置加上为好。

    1.7K10

    基于nginx搭建SocketIO集群

    这一节开头就提到了,如果要使用多节点做水平扩展的话,需要保证一个客户端只跟具体的某台SocketIO服务器维持连接,否则的话,在WebSocket协议握手阶段,会因为握手失败而无法正常建立连接。...这2个请求头都是HTTP协议升级到WebSocket协议的过程中会用到的。 接下来我们重启nginx服务器,再启动客户端。 以下是客户端控制台输出: ? 可以看到,现在客户端是成功建立连接了。...之前我们配置upstream块的时候,并没有明确指定具体的负载均衡策略,因此nginx使用的是默认的轮询策略,而由于WebSocket协议握手的过程中不是一步而就的,它分了几个步骤,如果说上一次是与服务器...1握手,下一次是与服务器2握手,那么肯定没法正常完成握手流程,连接也就没法正常建立了。...至于proxy_set_header这个配置,目的是将客户端在握手过程中的请求头传输给后端服务器,不过我试了将这个配置注释掉,发现也还是能正常建立连接的,在生产环境,建立还是把这个配置加上为好。

    1.2K20

    Docker在手,天下我有,在Win10系统下利用Docker部署Gunicorn+Flask打造独立镜像

    书接上回,之前一篇:Win10环境下使用Flask配合Celery异步推送实时/定时消息(Socket.io)/2020年最新攻略,阐述了如何使用Celery异步推送Websocket消息,现在我们利用...支持Websocket from flask import Flask from flask_sqlalchemy import SQLAlchemy import pymysql from flask...import request,jsonify from flask_cors import CORS from flask_socketio import SocketIO,send,emit,join_room...编辑项目目录下的requirements.txt文件,这里面都是我们项目所依赖的库 flask==1.0.2 flask-cors flask-socketio flask-sqlalchemy pymysql...gunicorn.conf.py"]     可以看到,我们项目的镜像首先基于python3.6这个基础镜像,然后声明项目目录在/Project/myflask中,拷贝依赖表,之后安装相应的依赖,这里在安装过程中我们指定了国内的源用来提高打包速度

    1.5K40

    基于flask的网页聊天室(四)

    基于flask的网页聊天室(四) 前言 接前天的内容,今天完成了消息的处理 具体内容 上次使用了flask_login做用户登录,但是直接访问login_requare装饰的函数会报401错误,这里可以自定义...接下来就是怎样做消息的发送以及接收了 这里使用websocket的方式,它可以使客户端与服务端建立起全双工的通信方式 客户端使用socket.io.js,服务端使用flask-socketio扩展 于是首先要...pip安装flask-socketio 然后: from flask_socketio import SocketIO socketio = SocketIO(app, async_mode='eventlet...') socketio.run(app,host='0.0.0.0') 像上边这样把原来的app启动改一下,eventlet是服务器,它支持websocket,必须要先pip安装 然后具体处理消息,首先是消息的发送...new_message’)装饰的函数就是new_message的事件处理,这里把它存入表中,并返回一个消息的html字符串,传入message对象渲染,broadcast=True表示广播,意思是所有与服务端建立websocket

    2K20

    【Flask开发踩坑实录】pip 安装报错:“No matching distribution found” 的根本原因及解决方案!

    from flask_socketio import SocketIO, emit ModuleNotFoundError: No module named 'flask_socketio'...简介: Flask-SocketIO 是一个基于 Socket.IO 的 Flask 扩展,支持 WebSocket 实时通信,非常适合: 实时聊天应用 多人协同编辑 实时数据推送(如直播弹幕、后台推送...) 常用导入方式: from flask_socketio import SocketIO, emit 配合 Flask 使用: app = Flask(__name__) socketio = SocketIO...ModuleNotFoundError: No module named 'flask_socketio' # 安装失败 pip install flask-socketio # 报错信息 ERROR...found for flask-socketio # 解决方式:切换镜像 pip install flask-socketio -i https://mirrors.aliyun.com/pypi/

    1.3K00

    从头搭建一个在线聊天室(二)

    第一部分可以看这里(链接) 整体技术栈 redis 应用 flask_socketio 的使用 websocket 简单应用 应用 redis 我这里使用 redis 来作为后端数据存储工具。...我采用的技术是 websocket,这样节省了使用 Ajax 轮询带来的额外开销。而且 flask 框架也有很好的 websocket 相关的扩展库供我们使用,即 flask-sokcetio。...首先安装好 flask_socketio 模块,然后引入并初始化 from flask_socketio import SocketIO, emit socketio = SocketIO() app... = Flask(__name__) socketio.init_app(app) 编写一个 socket 发送消息的函数 def socket_send(data, user):     emit("...前端 JavaScript 代码: //websocket var websocket_url = 'http://' + document.domain + ':' + location.port +

    1.5K31
    领券