アプリ向けのサーバーAPIは「REST」 or 「WebSocket」?
アプリとサーバー間のやりとりをREST APIかまたはWebSocketで実装するか迷ったときの覚書。
よくまとまっているサイト
今のところ「共存出来るんだから、それぞれの特性を理解して使い分けろ」に落ち着いている感じ。
WebSocketでやりとりするメッセージにルール付けして、RESTを表現しようとする動きもある。
NginxはWebSocketをリバースプロキシ出来るし、ロードバランサとしても動作する。
ExpressJSとSocket.IOでセッションを共有出来る。
Socket.IOを利用すると名前空間(namespace)で機能分けして、部屋(room)でメッセージを送受信する範囲を制御できる。
接続すると自動的に1つの(自分のIDが付いた)roomに参加するので、特定の人だけにメッセージを送信する場合はその人だけが参加しているroomに送信する。
Socket.IO v1.0からバイナリー送受信もサポートされて、ファイルの送受信も簡単に実装できる。
PCを遠隔操作できるデモをPCやタブレットで複数開きながら操作すると感動する。
クライアントアプリをTitaniumで実装する場合は、iOS/Androidに対応したモジュールがある。
Ti.Network.Socket.TCPを使うと上記のネイティブモジュールを使わなくても出来るみたい。
- 【Titanium Advent Calendar 2011:五日目】Titanium Mobileでソケット通信 | @masuidrive blog
- masuidrive/ti-websocket-client | GitHub
ti-websocket-clientを使っている人が質問してtiwsを使えという回答がちらほら。
技術的には環境が整いつつある感じがするので、WebSocketで「最新情報を取得」とかやる必要がないアプリを作ってみようと思う。
オンラインゲームとかどんなプロトコルでやりとりしているのかな?
Google Cloud Platformにある記事とか参考になりそうだった。
何となく見えてきた。
< Related Posts >