Ayn0907 2025-07-05 00:26 采纳率: 50%
浏览 12
已结题

微信小程序后端兼容flask问题

在使用微信小程序连接flask后端时报错VM14 asdebug.js:10 WebSocket connection to 'ws://192.168.1.15:8080/socket.io/?EIO=3&transport=websocket' failed: (env: Windows,mp,1.06.2301160; lib: 3.8.9),使用的@holytiny\wxmp-socket.io-client包,查了一下是EIO的问题,有没有什么办法解决?ai给的解决方法都试过了没啥用

  • 写回答

6条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-07-05 00:29
    关注

    让【宝码香车】来帮你解答,本回答参考DeepSeek编写,并整理提供。

    如果还有疑问可以点击头像关注私信或评论。如果答案让您满意,请采纳、点赞、关注,非常感谢!
     
    若您愿意支持,欢迎直接打赏,将不胜感激!
     

    微信小程序连接Flask后端WebSocket报错解决方案

    这个问题通常是由于微信小程序与Flask-SocketIO版本不兼容导致的。以下是详细的解决方案:

    问题分析

    错误信息表明:

    • 小程序尝试连接 ws://192.168.1.15:8080/socket.io/ 失败
    • 使用了 @holytiny/wxmp-socket.io-client
    • 报错与 EIO 参数有关(Engine.IO协议版本问题)

    解决方案

    1. 确保Flask-SocketIO使用兼容版本

    pip uninstall flask-socketio python-socketio python-engineio
    pip install flask-socketio==5.3.4 python-socketio==5.7.2 python-engineio==4.4.1
    

    2. 修改Flask后端代码

    from flask import Flask
    from flask_socketio import SocketIO
    
    
    app = Flask(__name__)
    socketio = SocketIO(app, cors_allowed_origins="*", async_mode='eventlet')
    
    
    @socketio.on('connect')
    def handle_connect():
        print('客户端已连接')
    
    
    if __name__ == '__main__':
        socketio.run(app, host='0.0.0.0', port=8080)
    

    3. 小程序端修改连接方式

    import io from '@holytiny/wxmp-socket.io-client'
    
    
    // 修改连接配置
    const socket = io('http://192.168.1.15:8080', {
      transports: ['websocket'],
      upgrade: false,
      forceNew: true,
      reconnection: false,
      query: {
        EIO: 3  // 明确指定Engine.IO版本
      }
    })
    
    
    socket.on('connect', () => {
      console.log('连接成功')
    })
    

    4. 网络配置检查

    "开始"

    其他注意事项

    1. 开发环境配置
      • 微信开发者工具 → 详情 → 本地设置 → 勾选"不校验合法域名、web-view域名、TLS版本以及HTTPS证书"
    1. 生产环境要求
      • 必须使用HTTPS和已备案域名
      • 在微信公众平台配置服务器域名
    1. 替代方案
      • 如果仍然无法解决,可以考虑使用微信原生WebSocket API
    // 微信原生WebSocket示例
    const socket = wx.connectSocket({
      url: 'ws://192.168.1.15:8080',
      success: () => console.log('连接成功'),
      fail: (err) => console.error('连接失败', err)
    })
    

    如果以上方法仍不能解决您的问题,可能需要检查:

    • 后端是否真正启动了WebSocket服务
    • 网络中间是否有代理或拦截
    • 微信小程序基础库版本是否过旧
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 7月17日
  • 已采纳回答 7月9日
  • 专家已采纳回答 7月8日
  • 创建了问题 7月5日