Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Используем вебсокеты в своем iOS приложении

Anna | 2.07.2014 | нет комментариев

Сегодня я хочу рассказать вам о том, как легко и стремительно подключить вебсокеты в свое iOS приложение на примере чата знаменитой биржи криптовалют. Реализуем мы это при помощи комфортного открытого решенияSocketRocket.

Данный подход может сгодиться для:

  • Реализации чата в мобильном заказчике под iOS
  • Применении информации чата для обучения нейронных сетей

Заинтересовавшихся умоляю под кат!

Добавляем SocketRocket в план

На гитхабе описано несколько вариантов установки, я опишу тот, которым пользуюсь сам.

  1. Добавляем в наш план все файлы из группы «SocketRocket»
  2. Добавляем следующие фреймворки в план:
    • libicucore.dylib
    • CFNetwork.framework
    • Security.framework
    • Foundation.framework
  3. Добавляем в план расшифровщик HTML символов от Google (позднее осознаете, для чего)

Ничего трудного! Все готово для применения каждой мощи вебсокетов.

Инициализируем сокеты

Способами информационного поиска, дедукции и с поддержкой отзывчивых разработчиков биржы, я наткнулся на открытый источник, откуда выдернул необходимый URL для сокетов чата:

NSURL *url = [NSURL URLWithString:@"wss://ws.pusherapp.com/app/4e0ebd7a8b66fa3554a4?protocol=6&client=js&version=2.0.0&flash=false"];

Создаем сам объект сокета с необходимым запросом, открываем его и делаем себя делегатом:

NSURLRequest *request = [NSURLRequest requestWithURL:url];
SRWebSocket *rusSocket = [[SRWebSocket alloc] initWithURLRequest:request];
rusSocket.delegate = self;
[rusSocket open];

Полный код способа setupSockets

- (void)setupSockets
{
    NSURL *url = [NSURL URLWithString:@"wss://ws.pusherapp.com/app/4e0ebd7a8b66fa3554a4?protocol=6&client=js&version=2.0.0&flash=false"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    SRWebSocket *rusSocket = [[SRWebSocket alloc] initWithURLRequest:request];
    rusSocket.delegate = self;
    [rusSocket open];
}
Способы SRWebSocketDelegate

В всяком уважающем себя фреймворке под Objective-C непременно обязаны быть делегаты — а в вебсокетах и подавно. Мы реализуем два способа делегата — 1-й, тот, что вызывается позже установки соединения и открытия сокета, и 2-й, вызываемый по приобретению сообщения.

- (void)webSocketDidOpen:(SRWebSocket *)webSocket
{
    NSString *helloMsg = @"{\"event\":\"pusher:subscribe\",\"data\":{\"channel\":\"chat_ru\"}}";
    [webSocket send:helloMsg];
}

Тут все предельно легко: как только сокеты открываются, мы подписываемся на оповещения из русского чата. По аналогии, дозволено прописать и «chat_en».

Дальше мы описываем способ приобретения сообщения от вебсокета:

- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message
{
    message = [[message stringByReplacingOccurrencesOfString:@"///" withString:@""] stringByReplacingOccurrencesOfString:@"\\\\\\" withString:@""];
    message = [message gtm_stringByUnescapingFromHTML];
}

Вновь же, все легко. В первой строке способа мы избавляемся от мусора, во 2-й мы используем категорию от Google для того, Дабы преобразовать HTML символы в читаемые пользователем. Message и есть наше сообщение — дальше его дозволено парсить так, как душе желательно.

Пример сообщения

{«event»:«msg»,«data»:”\”{«uid»:«467754»,«login»:«BTCalexxx»,«msg»:«anyone in for a short ltc pump to 15?»,«msg_id»:12268748,«date»:«04.03.14 07:37:50»,«usr_clr»:”#8da0b9″}\”",«channel»:«chat_en»}
Закрываем соединение

Неизменно закрывайте соединение, когда оно вам теснее не необходимо! Сделать это дозволено дальнейшим способом:

[rusSocket close];
Завершение

Большое спасибо, что дочитали до конца! Вот таким нехитрым метдом у нас на ладони сейчас есть вероятность иметь актуальную информацию о чате с одной из бирж криптовалют.

В дальнейшей статье могу описать, как сделать свой WhatsApp при помощи открытых инструментов за 4-5 часов работы. Безусловно, если вам, дорогие читатели, будет увлекательно.

Источник: programmingmaster.ru
Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB