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

Supabase实时订阅超时求助:React Native无法监听profiles表变更

解决React Native中Supabase Realtime订阅TIMED_OUT问题
  • 检查Supabase Realtime服务状态
    登录Supabase控制台,进入对应项目的「Realtime」页面,确认服务处于启用状态。若服务被暂停或未正常运行,会直接导致连接超时。

  • 确认Realtime连接URL配置
    初始化Supabase客户端时,确保自动生成的Realtime URL为wss://<项目ID>.supabase.co/realtime/v1格式(createClient会自动处理,无需手动修改)。若手动指定了realtime.url参数,必须使用wss开头的WebSocket地址,HTTP/HTTPS开头的URL会导致连接失败。
    示例初始化代码:

    import { createClient } from '@supabase/supabase-js'
    
    const supabaseUrl = 'https://你的项目ID.supabase.co'
    const supabaseAnonKey = '你的匿名密钥'
    const supabase = createClient(supabaseUrl, supabaseAnonKey)
    
  • 检查React Native网络权限与WebSocket支持

    • iOS:在Info.plist中确认App Transport Security允许访问Supabase域名,若为测试环境可临时开启NSAllowsArbitraryLoads(生产环境不推荐)。
    • Android:在AndroidManifest.xml中添加必要网络权限:
      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
      
    • 更新@supabase/supabase-js到最新版本,避免依赖库的WebSocket兼容性问题。
  • 排查频道与订阅参数冲突

    • 避免重复订阅同一频道,可在新订阅前移除旧频道:
      await supabase.removeChannel('custom-all-channel')
      const profilesChannel = supabase.channel('custom-all-channel-new')
        .on('postgres_changes', { event: '*', schema: 'public', table: 'profiles' }, (payload) => {
          console.log('收到变更:', payload)
        })
        .subscribe((event) => console.log(event))
      
    • 确认数据库表名、schema名称拼写完全正确(PostgreSQL对大小写敏感,默认表名为小写)。
  • 检查Row Level Security (RLS)规则
    即使开启了实时权限,RLS规则可能阻止Realtime服务获取变更:

    • 临时关闭RLS测试:
      ALTER TABLE profiles DISABLE ROW LEVEL SECURITY;
      

    若关闭后能正常收到变更,说明需调整RLS规则,确保匿名角色(Realtime服务使用anon身份)有权限访问目标行数据。例如:

    CREATE POLICY "允许匿名用户查看所有profiles" ON public.profiles
    FOR SELECT USING (true);
    
  • 查看Supabase Realtime日志
    在Supabase控制台的「Realtime」页面查看日志,连接失败、认证错误等信息会直接显示,帮助定位具体问题。

  • 测试WebSocket连接有效性
    使用wscat工具测试连接是否正常:

    wscat -c wss://你的项目ID.supabase.co/realtime/v1?apikey=你的匿名密钥
    

    若连接成功会收到欢迎消息,失败则会返回具体错误(如认证失败、网络不通)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:35:26