StarScream websocketDidReceivePong не вызывается для записи Ping

Я хотел бы периодически отправлять запросы на сервер, чтобы поддерживать соединение.

Это функция для отправки пинга

socket.writePing(NSData())

Но я не получаю понг обратно

func websocketDidReceivePong(socket: WebSocket){
    wsConsole.text = wsConsole.text .stringByAppendingString("\n websocket received pong")
}

вышеупомянутый делегат будет уволен, когда сервер отправит обратно понг.

К вашему сведению: я могу успешно установить веб-сокет соединиться, отправить сообщение и закрыть соединение, и я реализовал, и я дал socket.delegate=self

WebSocketPongDelegate

Вот URL веб-сокета, который я использую для тестирования

WS://echo.websocket.org/

Мне интересно, почему я не получаю понг от сервера веб-сокетов.

1 ответ

Решение

Является ли ваш сокет свойством класса, чтобы убедиться, что он остаётся? Если вы разместите его только в стеке функций, он выпадет из области видимости, и делегаты никогда не будут вызваны. Так же pongDelegate отделен от обычного делегата, так что вам нужно также установить это для себя:

socket.pongDelegate = self

Другие вопросы по тегам