Action Cableとは
WebSocketとRailsのその他の部分をシームレスに統合するためのもの。 Railsで扱っているデータをWebSocketでも扱えたりする。その逆も。
WebSocketについて
WebSocketとは
HTTPなどと同じく通信規格の1つ。Webアプリケーションにおいて双方向通信を実現するために開発されている。
メリット
- 通信サイズが小さい
- 双方向通信が可能なのでサーバーからpushできる
- リアルタイム通信
注意点
- 接続しっぱなしなので、切断処理や再接続処理をきちんとしていないと問題が起きるかも
ws://~
の場合、暗号化されていないので機器によっては通信を遮断する可能性がある- どこかのプロキシサーバーで引っかかる可能性がある
- なので、基本的にTLS上で通信するようにする
- URIスキームは
wss://~
になる
- コネクション数の制限
- 正しく切断していないとポートが枯渇する可能性がある
- 接続が持続するため、ロードバランサーが有効ではなくなる
- 負荷分散はクライアント側でやるのが吉
- サーバー再起動時の再接続処理時に高負荷になる
- これもクライアントで負荷分散する
- アクセスするまでにランダムwait入れるなど
IPAによるWebSocketにおける脅威シナリオ
https://www.ipa.go.jp/security/awareness/vendor/programmingv2/web09.html
Action Cableについて
詳しくはこれ : https://railsguides.jp/action_cable_overview.html
仕組み
Pub/Sub方式でサーバーとクライアント間でWebSocket通信を行う。
参考
- websocket 概要説明
- pixiv websocket 知見
- websocket on AWS
- mizchi 氏