Advertisement

webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話

freelance developer at mitolab.co
Mar. 26, 2015
Advertisement

More Related Content

Slideshows for you(20)

Similar to webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話(20)

Advertisement

webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話

  1. webSocket通信を知らないiOS エンジニアが知っておいて損は しない(経験談的な)軽い話 mitolab 宮里 悠平 2015/03/26 @ Loco Partnersもくもく会 #6
  2. お話すること • webソケット通信って? • iOSではどんなライブラリがあってどれがいいの • サンプル作ってみたよ • 作ってみて気づいた点(初めて触る人には有用かも)
  3. 自己紹介 • @mito_log こんなアイコン→ • フリーランスiOSプログラマ • from沖縄 9月から海外(予定) • mitolab.co (8月末ごろまで東京で活動予定!お仕事ください!)
  4. webソケット通信 なるほど、Slackのあのレスポンスの良さ はこういう通信方式を使っているから?
  5. あれ、もしかしてこれ使えば Slackぽいチャットアプリ作れ ちゃうんじゃない?
  6. いやまて、そもそも webソケット通信てなんなの?
  7. Webソケット通信 なるほど双方向通信ね、でもそれっ て今までも色々あったよな?
  8. これまでの双方向通信といえば… quote from http://www.slideshare.net/You_Kinjoh/websocket-10621887
  9. Webソケット通信の場合は… quote from http://www.slideshare.net/You_Kinjoh/websocket-10621887
  10. Webソケット通信のメリット • 一度つないでしまえば、最小限のパケットで済むた めサーバ/クライアント双方の負荷が低い • 一度つないでしまえば、サーバ/クライアントのど ちらからでもデータのやりとりを開始できる • HTTP通信に近いため、既存の通信方式とMIXし易 い
  11. Webソケット通信のデメリット • コネクション切断/再接続ハンドリング(サーバ側の システムメンテとかクライアント側の端末がスリー プしたとか)が大変。 • プロトコルはリアルタイム性に優れていても例えば DBとかインフラも追従しないと性能発揮できない のでは?
  12. じゃあiOSではどうやって使う? ライブラリ名 特徴 Socket Rocket おそらく一番よくメンテされてるライブラリ。 一般的。でかい案件で使うならこれかなと。 Starscream swift製。できることは上とあまり変わらないのか なと。 Socket.IO-objc socket.ioのラッパライブラリ。v0.9までの対応。 SIOSocket socket.ioのラッパライブラリ。webViewでjsを読 み込んで、jsをブリッジして利用。v1.0対応。
  13. 今回やりたいこと • webソケット通信といえばチャット! • マルチroomのチャットアプリ (ググった限りだとまだそういうサンプルなかったので、作ったら優位性があるかと思い…)
  14. SIOSocket
  15. SIOSocket “SIOSocket is simple interface for communicating with socket.io 1.0 from iOS.” via github • roomの概念を持っている(socket.io自体がそう) • socket.io v1.0に対応 • 使いやすそう(webviewでsocket.ioをラップしてるだけなので)
  16. Demo1 ec2node socket.io port 3000 SIOSocket SIOSocket Qiita:socket.io × SIOSocketでマルチルーム対応 iOSチャットアプリを作ってみた Socket.ioを使ったSimpleなチャットシステム 注) webSocketはforegroundでのみ有効
  17. ec2node socket.io port 3000 SIOSocket SIOSocket Qiita:socket.io-php-emitterを使ってsocket.ioの外(簡易API)からemitしてみる on memory KVS apache phpsocket.io-emitter socket.io-redis + phpredis socket.io-php-emitter port 80 Demo2 Socket.io + RESTなAPIで構成したチャットシステム 注) socket.ioのプロセスの外からsocket.io プロセスにアクセスする場合、 adapter(ここではredis)を用いれば可能 Adapter
  18. 感銘を受けた点 • websocketをつなぐと当該socketに割り振られたidの roomに自動的にjoinする • コネクションが切れると自動的に全てのroomから退出す る • roomの削除に関してclient/serverが意識する必要はない • socket.io-emitterはnodeサーバ側のcallbackを呼ぶのでは なく、直接roomの各メンバのcallbackを呼ぶ
  19. 次のステップ • node.js、socket.ioの理解を深める • 既存で動いてるシステムを見てみたい… • socket.ioが公式swiftクライアント出したので試して みる
  20. ご清聴ありがとうございました
  21. 参考リンク • フレクトのHeroku Lab WebSocket通信のメリットを考える • SlideShare WebSocketのキホン • Socket.io公式swiftクライアント socket.io-client-swift • RFC6455 The WebSocket Protocol 日本語訳 • CyberAgent テックレポート Socket.io, Redisを使用し各ゲーム間でプッシュ 通史するシステム • 今回のサンプルソース https://github.com/mitolog/SIOChat
Advertisement