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

本地K8s部署Supabase实时连接失败:URL或密钥配置是否正确?

解决Supabase Realtime WebSocket 404错误

一、确认端口转发的目标服务

K8s部署的Supabase中,Realtime是独立服务(通常Deployment名称为supabase-realtime),默认监听4000端口。你需要确保端口转发是将本地52102端口映射到Realtime服务的4000端口,而非Supabase API网关或其他服务。

正确的端口转发命令示例:

kubectl port-forward deployment/supabase-realtime 52102:4000

二、验证WebSocket URL正确性

  1. 检查端点路径有效性:
    • 官方本地部署的Realtime默认WebSocket端点为ws://localhost:4000/socket,你可以通过HTTP方式访问http://localhost:52102/socket/info测试。若返回JSON响应,说明路径正确;若返回404,需确认路径是否被Supabase Chart配置修改。
    • 部分版本的Supabase Realtime端点可能为/realtime/v1,可尝试将URL改为ws://localhost:52102/realtime/v1重试。
  2. 协议匹配:端口转发为HTTP时用ws://,HTTPS时用wss://。

三、确认Realtime服务配置状态

  1. 检查Realtime服务的核心环境变量:
    kubectl exec deployment/supabase-realtime -- env | grep REALTIME_
    
    确保REALTIME_ENABLED设置为true,且REALTIME_JWT_SECRET与Supabase的service key一致。
  2. 验证服务是否正常启动:
    kubectl logs deployment/supabase-realtime
    
    查看日志中是否存在类似"Realtime server started"的启动成功标识。

四、密钥一致性验证

你使用service key的方式是正确的,但需确保该密钥属于本地部署的Supabase实例。可通过以下命令获取实例的service key并对比:

kubectl get secret supabase-secrets -o jsonpath='{.data.SUPABASE_SERVICE_ROLE_KEY}' | base64 -d

五、代码补全提示

当前代码中callback1和_on_subscribe函数未定义,即使WebSocket连接成功,后续也会报错。示例实现如下:

async def callback1(payload):
    print("收到PostgreSQL变更:", payload)

def _on_subscribe(status, error):
    if status == RealtimeSubscribeStates.SUBSCRIBED:
        print("订阅成功")
    else:
        print(f"订阅失败: {error}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 01:57:14