iOSアプリケーションでWebソケットを使用する

こんにちは、Habrahabrの読者の皆さん!



今日は、有名な暗号通貨交換のチャット例を使用して、WebソケットをiOSアプリケーションにすばやく簡単に接続する方法についてお話したいと思います。 これは、便利なオープンSocketRocketソリューションの助けを借りて実現しています。



このアプローチは次の場合に役立ちます。





興味のあるカットをお願いします!



SocketRocketをプロジェクトに追加します


インストールのいくつかのオプションがgithubに記載されています;私は自分で使用するものについて説明します。



  1. SocketRocketグループのすべてのファイルをプロジェクトに追加します
  2. 次のフレームワークをプロジェクトに追加します。

    • libicucore.dylib
    • CFNetwork.framework
    • Security.framework
    • Foundation.framework
  3. GoogleのHTML文字デコーダーをプロジェクトに追加します (後で理由を理解できます)


複雑なことはありません! すべてがWebソケットのフルパワーを使用する準備ができています。



ソケットの初期化


情報の取得 、推測、およびレスポンシブエクスチェンジの開発者の方法を使用して、オープンソースに出会い、そこからチャットソケットの正しい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のすべての自尊心のあるフレームワークには、デリゲートが必要です。さらに、Webソケットにもデリゲートが必要です。 接続を確立してソケットを開いた後に呼び出される最初のメソッドと、メッセージの受信時に呼び出される2番目のメソッドの2つのデリゲートメソッドを実装します。



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





ここではすべてが非常に簡単です。ソケットが開くとすぐに、ロシアのチャットからの通知をサブスクライブします。 同様に、「chat_en」と書くこともできます。



次に、Webソケットからメッセージを受信する方法について説明します。



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





繰り返しますが、すべてが簡単です。 メソッドの1行目ではゴミを取り除き、2行目ではGoogleのカテゴリを使用してHTML文字をユーザーが読み取り可能な形式に変換します。 メッセージは私たちのメッセージです-さらに、あなたの心が望むようにそれを解析することができます。



メッセージ例
{「イベント」:「msg」、「データ」:「\」{「uid」:「467754」、「ログイン」:「BTCalexxx」、「msg」:「15への短いltcポンプのだれでも」 "Msg_id":12268748、 "date": "03/04/14 07:37:50"、 "usr_clr": "#8da0b9"} \ ""、 "channel": "chat_en"}



接続を閉じる


不要になったら、常に接続を閉じてください! これを行うには、次の方法を使用します。



 [rusSocket close];
      
      





おわりに


最後まで読んでくれてありがとう! このような簡単な方法で、手のひらに暗号通貨取引所の1つからのチャットに関する最新情報を入手できるようになりました。



次の記事では、4〜5時間の作業でオープンツールを使用してWhatsAppを作成する方法を説明できます。 もちろん、読者の皆さんが興味を持っているなら。



All Articles