问题描述

在按照 李辉 老师的 《Flask Web开发实战》 练习项目时,在网络聊天室项目使用socket.io进行WebSocket通信时,发现客户端和服务器端无法进行消息发送,服务器端的GET前请求一直报错:"GET /socket.io/?EIO=3&transport=polling&t=N_l1L5D HTTP/1.1" 400 -
一直往上翻日志发现在服务器启动时有提示:The client is using an unsupported version of the Socket.IO or Engine.IO protocols (further occurrences of this error will be logged with level INFO)

解决思路

根据提示推测可能是Flask-socketio版本和使用的socket.io js客户端版本不匹配导致的。
查看李辉老师原项目github的代码发现,其当时使用的Flask-SocketIO版本为3.0.1,对应的socket.io客户端版本是3.x的版本。

而我在练习时直接将static/js中的文件复制到了项目中,导致新的Flask-SocketIO(5.1.1)与js版本客户端不匹配,从而二者不能正常通信。
Flask-socktio兼容版本说明:

问题解决

根据官方给定的兼容版本,从socket.io官网CDN下载最新的4.4.1版本js文件,python-engineio使用4.3.1版本。然后再启动项目二者就可以进行通信了。

不过发现项目启动时,还是会有The client is using an unsupported version of the Socket.IO or Engine.IO protocols (further occurrences of this error will be logged with level INFO)报错信息,但是不会再在日志中一直弹出GET请求的400错误,在客户端发送请求,服务器端也可以正常接收处理了。

可能是因为在Flask的研发环境没有使用合适的异步服务器导致的,flask自带werkzeug服务器只支持长轮询并不支持websocket。

还需后续跟进问题……

Flask-socketio服务器端与js客户端socket.io版本不匹配问题解决相关推荐

  1. node.js 之 socket.io

    2019独角兽企业重金招聘Python工程师标准>>> 1 Install Node.js on Ubuntu sudo apt-get install python-softwar ...

  2. Node.js 和Socket.IO 实现chat

    使用 Node.js 和 Socket.IO 构建简单的聊天程序 在node.js根目录下创建文件夹chat,里面添加两个文件:app.js和index.html app.js var fs = re ...

  3. TWaver HTML5 + Node.js + express + socket.io + redis(六)

    接上一篇TWaver HTML5 + Node.js + express + socket.io + redis(五), 这一篇将讲解如何用模版生成html页面, 如何验证用户登录, 您将了解到: 1 ...

  4. TWaver HTML5 + Node.js + express + socket.io + redis(五)

    接上一回TWaver HTML5 + Node.js + express + socket.io + redis(四), 这一篇您将了解到 1. 如何保存更改后的拓扑数据 (包括新增的, 修改的, 删 ...

  5. linux安装socket.io,ubuntu – 如何在node.js npm服务器上查看socket.io版本

    我想确认一下,如果我升级到socket.io 0.7,我的当前应用程序是否无法在此服务器上运行?如果我升级 为此我想看看我当前的socket.io版本,我怎么能看到它? 而另一方面我想去稳定版本的节点 ...

  6. 支持win7的node.js版本+node和npm版本不匹配问题解决

    https://nodejs.org/zh-cn/download/releases/ node.js下载地址  支持win7的为 https://nodejs.org/download/releas ...

  7. springboot整合dubbo的问题之一。zookeeper客户端和zookeeper版本不匹配问题

    异常: Error starting ApplicationContext. To display the conditions report re-run your application with ...

  8. 【博客大赛】100行js代码实现网站在线用户数量统计 nodejs + socket.io方案

    需求提出 公司的在线培训平台,需要增加一个新功能:实时统计当前在线的用户数量并在终端界面上显示,需要的时候可以查询当前在线的用户的明细. 有3种技术方案可以选用: 1)改动后台代码,在用户登录和退出时 ...

  9. 使用Node.js+Socket.IO搭建WebSocket实时应用

    Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. 作 ...

最新文章

  1. 【Arduino】十秒挑战
  2. 用户自定义类型(User-defined Type)参数的传递
  3. BZOJ3139/BZOJ1306 HNOI2013比赛/CQOI2009循环赛(搜索)
  4. CD Linux U盘启动办法
  5. 口腔取模过程及注意事项_取模变形?教你三种方法,轻松防止取模变形!
  6. leetcode - 983. 最低票价
  7. php的ob函数详解
  8. Hive中Map数据类型转String类型,其中具体内容不变
  9. asp.net MVC之 自定义过滤器(Filter)
  10. centos 修改root密码_Ubuntu、Redhat、Kali、CentOS重置root密码方法汇总
  11. html文本延迟加载,LazyLoad 延迟加载(按需加载)
  12. python--mysql创建数据库
  13. Win10不相邻的磁盘怎么合并,一学就会
  14. qlv格式转换成mp4 视频格式转换
  15. 油猴Safari插件Tampermonkey
  16. 推荐一个ITSM功能系统架构图给大家
  17. Ceph 分布式存储架构解析与工作原理
  18. 将 laravel 项目内静态文件,css、js、images 部署到七牛云 CDN
  19. URL 重写的常见用法
  20. 计算机学院 统计学博士点,重大喜讯:统计学科获批一级学科博士授权点

热门文章

  1. 单片机位寻址举例_mcs51单片机位操作指令及编程举例
  2. 自然语言处理(NLP):04 word2vec 入门介绍
  3. 乡村学校少年宫计算机组活动记录,乡村学校少年宫2013.5计算机兴趣小组活动记录表.doc...
  4. 安全开发--7--SSH隧道工具开发
  5. app inventor:照相机调用、改变图片大小
  6. phpstorm 关于许可证过期问题
  7. java-数据字典转换
  8. 东师计算机应用基础在线1,计算机应用基础(高起专)计算机应用基础东师20春在线作业1满分...
  9. 如何借助 AI ,生成专属图标? #iconify AI
  10. hadoop新手入门指导