输入加入码连接主机时触发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
相关产品推荐
相关产品推荐

