Клиент GKSession считает, что он подключен после denyConnectionFromPeer - PullRequest
0 голосов
/ 16 марта 2011

У меня типичная настройка GKSessionModeServer/GKSessionModeClient.

Когда сервер отклоняет попытку подключения клиента с помощью denyConnectionFromPeer:, вызывается метод session:connectionWithPeerFailed: клиента, но затем он получает изменение состояния GKPeerStateConnectedс peerID моего сервера.Другими словами, клиент считает, что соединение установлено успешно, а сервер - нет.

Кажется, что это противоречит здравому смыслу и документации для connectToPeer:withTimeout:, в которой говорится

Еслисоединение с удаленным узлом установлено успешно, метод делегата 'session:peer:didChangeState: вызывается для каждого узла, к которому он успешно подключен.Если соединение не установлено или ваше приложение отменяет попытку соединения, сеанс вызывает метод делегата session:connectionWithPeerFailed:withError:.

Я знаю, что это не означает, что обратный вызов изменения состояния не будет вызывается в случае сбоя соединения, но чистый результат с точки зрения клиента состоит в том, что сбой соединения, по-видимому, приводит к успешному соединению.

Сцепление за соломинку Я пытался позвонить cancelConnectToPeerиз обратного вызова connectionWithPeerFailed, без результата.

Клиент может обойти эту проблему, игнорируя следующие GKPeerStateConnected, но это усложняет и усложняет повторное подключение, когда сервер снова начинает принимать подключения.

Так почему же сеанс клиента не может понять, что он окончен?

1 Ответ

1 голос
/ 26 марта 2011

Я сам разработал такое же приложение ( GKSessionModeServer / GKSessionModeClient ).Когда вы отклоняете соединение с одноранговым узлом, он запускает делегат session:peer:didChangeState: с аргументом GKPeerConnectionState, равным GKPeerStateDisconnected.Вам просто нужно правильно обработать это в своем коде - у меня никогда не было проблем с этой частью вообще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...