You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask-SocketIO服务用Insomnia测试返回400错误,求问题排查

Flask-SocketIO 400错误的解决办法

问题1:服务器启动逻辑错误

你同时调用了app.run()和socketio.run(app),但app.run()是阻塞式方法,会启动普通Flask HTTP服务器,无法处理SocketIO连接,且后续的socketio.run()根本不会执行。正确做法是仅用socketio.run()启动服务,它会自动处理HTTP与WebSocket请求。

修改后的启动代码:

if __name__ == '__main__':
    socketio.run(app, debug=True, host='127.0.0.1', port=5000, logger=True, engineio_logger=True)

问题2:Insomnia请求方式错误

SocketIO基于WebSocket协议,不能用普通HTTP请求(如POST)发送消息,需使用Insomnia的WebSocket类型请求:

  • 新建请求时选择WebSocket类型
  • 连接地址填写:ws://127.0.0.1:5000/socket.io/?EIO=4&transport=websocket
  • 连接成功后,发送符合SocketIO格式的消息:比如触发message事件,发送内容为42["message", "你的消息内容"]
    • 其中42是SocketIO的事件消息标识符,["message", "内容"]是事件名与消息体的数组结构

额外验证方案

若要快速验证服务是否正常,可确保templates/index.html包含正确的SocketIO客户端代码:

<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.1/socket.io.js"></script>
<script>
    const socket = io();
    socket.emit('message', '测试消息');
    socket.on('message', (msg) => {
        console.log('收到回复:', msg);
    });
</script>

访问http://127.0.0.1:5000,可在浏览器控制台查看消息交互,确认服务器功能正常。

内容的提问来源于stack exchange,提问作者DrKnowing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 18:42:13