アプリ向けのサーバーAPIは「REST」 or 「WebSocket」?

restapi_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を使うと上記のネイティブモジュールを使わなくても出来るみたい。

ti-websocket-clientを使っている人が質問してtiwsを使えという回答がちらほら。

 

技術的には環境が整いつつある感じがするので、WebSocketで「最新情報を取得」とかやる必要がないアプリを作ってみようと思う。

 

オンラインゲームとかどんなプロトコルでやりとりしているのかな?

Google Cloud Platformにある記事とか参考になりそうだった。

 

何となく見えてきた。

 

< Related Posts >