WebSocket connection to 'ws://ip:5000/socket.io/?EIO=4&transport=websocket&sid=UIt1XDrurIGk7QyNAAAI' failed: Invalid frame header
前言全局说明
一、问题
用 Python flask + js + websocket 搭建了一个网站,刚起的时候可以连接,也能正常执行命令,但大概几分钟后,就不行了。
报错:
WebSocket connection to 'ws://ip:5000/socket.io/?EIO=4&transport=websocket&sid=UIt1XDrurIGk7QyNAAAI' failed: Invalid frame header
二、网上的解决方法:
1. 修改配置文件(这里没有,也不知道取哪里修改,https://blog.csdn.net/weixin_53552934/article/details/125438549)
2. socket.io.js 版本低(经过测试:从4.2.0换到4.3.1,也没有解决)
3. 和心跳有关(但是,也不知道怎么设置)
三、可能的解决方法:
翻看源码时候,发现有些 io.connect 括号里有参数,
将:
var socket = io.connect();
改成
var socket = io.connect('http://你的网页IP:端口');
结果:
有一点作用,但没有完全解决。之前是总报错,但加入IP端口后,有成功
使用 var socket = io.connect('http://' + document.domain + ':' + location.port); 没成功
四、解决方法
更新 socket.io.min.js 文件版本,原来使用 4.2.0 报错,升级到4.7.4 版本就没有问题了。
(经过测试:4.2.0 ~ 4.6.2 都会出问题)
版本 | 状态 | 备注 |
---|---|---|
4.7.5 | OK | 通过 |
4.7.4 | OK | 通过 |
4.6.2 | 提示:failed: Invalid frame header | |
4.5.4 | 提示:failed: Invalid frame header | |
4.4.1 | 提示:failed: Invalid frame header | |
4.3.2 | 提示:failed: Invalid frame header | |
4.3.1 | 提示:failed: Invalid frame header | |
4.2.0 | 提示:failed: Invalid frame header |
五、WebSocke 介绍
https://blog.csdn.net/yiyueqinghui/article/details/88417756
https://blog.csdn.net/nihaoapengyou/article/details/111173377
https://blog.csdn.net/weixin_41217541/article/details/106354610
https://flask-socketio.readthedocs.io/en/latest/intro.html#version-compatibility (版本兼容说明)
免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。
参考、来源:
ChatGPT
https://blog.csdn.net/momoyaoquaoaoao/article/details/127256068
https://fanco.ink/post/SocketIO在flask中应用?page=6
https://blog.csdn.net/devshilei/article/details/131481881