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

Godot连接Supabase Realtime后WebSocket立即断开问题求助

解决Godot中Supabase WebSocket连接后立即断开的问题

核心原因:订阅消息格式不符合Supabase Realtime规范

你的WebSocket连接建立后马上断开,基本是因为订阅请求的格式不满足Supabase的要求,当前的subscribe_message有两处关键错误:

1. Topic格式写错了

你把筛选条件直接拼在Topic里的方式不对,正确的Topic格式应该是:

realtime:<schema名>:<表名>

默认schema是public,所以针对lobbies表的Topic应该是realtime:public:lobbies,筛选特定大厅的逻辑要放在config字段里,不是Topic的一部分。

2. 缺少必填的config字段

订阅请求必须包含config字段,用来指定监听类型(比如数据库变更、广播)和筛选规则。针对你要监听特定大厅状态变化的需求,需要配置数据库变更监听和行级筛选条件。

修正后的订阅代码

把你的_on_connection_established函数换成下面的代码:

func _on_connection_established():
    is_connected = true
    print("WebSocket connection established.")

    var subscribe_message = {
        "type": "subscribe",
        "topic": "realtime:public:lobbies",
        "event": "*",
        "ref": "lobby_subscription",
        "config": {
            "broadcast": { "ack": false, "self": false },
            "database": {
                "schema": "public",
                "table": "lobbies",
                "filter": "id=eq." + str(UserData.current_lobby_id)
            },
            "presence": { "key": "" }
        }
    }
    socket.send_text(JSON.stringify(subscribe_message))
    print("Subscribed to lobbies changes. Current lobby id: " + str(UserData.current_lobby_id))

额外要检查的点

  • URL语法修正:你提供的WebSocket URL末尾多了个.(UserData.token.),得删掉这个多余的点,保证URL格式正确。
  • Supabase控制台配置:
    • 确认在Supabase控制台的Realtime面板里,已经开启了public.lobbies表的Realtime功能。
    • 检查行级安全(RLS)规则,确保当前用户有权访问ID为UserData.current_lobby_id的大厅数据,不然Supabase会直接拒绝订阅请求。
  • 查看错误详情:在_on_data_received里加个对error类型消息的处理,这样能直接看到Supabase返回的具体错误原因:
match message.type:
    "broadcast":
        _handle_broadcast(message)
    "presence_diff":
        _handle_presence_diff(message)
    "error":
        print("Supabase订阅错误:", message)
    _:
        print("Unknown message type:", message.type)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 11:37:05