fugafuga.write

日々のログ

Action Cableの諸々について調べた

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通信を行う。

参考