gpt4 book ai didi

ios - 客户端 GKSession 在拒绝连接后认为已连接

转载 作者:行者123 更新时间:2023-11-29 05:05:50 24 4
gpt4 key购买 nike

我有一个典型的 GKSessionModeServer/GKSessionModeClient 设置。

当服务器使用 denyConnectionFromPeer: 拒绝客户端连接尝试时,客户端的 session:connectionWithPeerFailed: 方法将被调用,但随后它会收到 GKPeerStateConnected code> 状态随我的服务器的对等 ID 发生变化。换句话说,客户端认为连接成功,而服务器则没有。

这似乎与常识和 connectToPeer:withTimeout: 的文档不一致,其中说

If the connection to the remote peer is successful, the delegate’ session:peer:didChangeState: method is called for each peer it successfully connected to. If the connection fails or your application cancels the connection attempt, the session calls the delegate’s session:connectionWithPeerFailed:withError: method.

我知道这并不是说在连接失败的情况下不会调用状态更改回调,但从客户端的角度来看,最终结果是连接失败似乎连接成功。

捕获救命稻草,我尝试从 connectionWithPeerFailed 回调中调用 cancelConnectToPeer,但没有结果。

客户端可以通过忽略下一个 GKPeerStateConnected 来解决此问题,但这很麻烦,并且当服务器再次开始接受连接时,重新连接会变得复杂。

那么为什么客户端 session 不能理解它已经结束了?

最佳答案

我自己设计了相同类型的应用程序(GKSessionModeServer/GKSessionModeClient)。当您拒绝与对等点的连接时,它将触发 session:peer:didChangeState: 委托(delegate),并将 GKPeerConnectionState 参数设置为 GKPeerStateDisconnected。您只需要在代码中正确处理这个问题 - 我从来没有对这部分有任何问题。

关于ios - 客户端 GKSession 在拒绝连接后认为已连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5329976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com