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

输入加入码连接主机时触发Relay报错:self-connect not allowed,求解决方法

问题修复方案

错误原因

你在JoinGame方法中调用SetClientRelayData时,错误地将最后两个参数都传入了a.ConnectionData,这会导致客户端尝试使用自身的连接数据与Relay服务器建立连接,触发“self-connect not allowed”的限制。

正确代码调整

修改JoinGame方法中的SetClientRelayData调用,将倒数第二个参数替换为a.HostConnectionData:

public async void JoinGame()
{
    JoinAllocation a = await RelayService.Instance.JoinAllocationAsync(inputCode.text);
    // 修正:使用a.HostConnectionData作为主机连接数据,a.ConnectionData作为客户端连接数据
    transport.SetClientRelayData(a.RelayServer.IpV4, (ushort)a.RelayServer.Port, 
                                a.AllocationIdBytes, a.Key, 
                                a.HostConnectionData, a.ConnectionData);

    NetworkManager.Singleton.StartClient();
}

关键说明

  • HostConnectionData是创建房间的主机在分配Relay资源时生成的专属连接标识,客户端需要通过这个标识定位到主机。
  • ConnectionData是客户端自己的连接标识,用于Relay服务器区分不同的客户端连接。
  • 两者必须区分传入,否则Relay服务器会判定为同一实体尝试自连接,拒绝请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 21:55:47