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

Flutter WebSocket本地Web正常,部署Firebase Hosting异常求助

问题分析与解决方案

我帮你排查这个问题!你遇到的灰色方块现象,核心原因是浏览器的混合内容安全策略,和Firebase Hosting本身的关系不大,而是它默认启用的HTTPS触发了浏览器的安全限制。

为什么本地正常、部署后异常?

  • 本地开发时,Flutter Web的预览服务(或你用的本地Web服务器)通常是HTTP协议,浏览器允许从HTTP页面发起明文WebSocket(ws://)请求;
  • 但Firebase Hosting默认部署的是HTTPS站点,浏览器会拦截从HTTPS页面发起的不安全明文请求(包括ws://),这会导致你的HtmlWebSocketChannel无法建立连接,进而引发组件渲染异常(灰色方块就是连接失败后,StreamBuilder没有正常数据流的表现)。

验证方法

打开浏览器开发者工具(按F12),切换到「Console」标签,你应该能看到类似这样的错误提示:

Mixed Content: The page at 'https://your-firebase-project.web.app/' was loaded over HTTPS, but attempted to connect to insecure WebSocket endpoint 'ws://echo.websocket.org/'. This request has been blocked; this endpoint must be available over WSS.

解决方案

把WebSocket连接协议从ws://改成加密的wss://——echo.websocket.org本身支持WSS协议,所以只需要修改连接地址即可:

修改你的MyApp类中的连接代码:

// 原代码
channel: HtmlWebSocketChannel.connect('ws://echo.websocket.org'),

// 修改后
channel: HtmlWebSocketChannel.connect('wss://echo.websocket.org'),

重新编译并部署到Firebase Hosting,问题应该就能解决了。

额外注意事项

如果你是连接自己的WebSocket服务器,需要确保:

  • 服务器配置了有效的SSL证书,支持wss://协议;
  • 服务器端口(通常是443,或自定义的SSL端口)对外开放,没有防火墙拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:52:34