WebSocketを使う時の注意点!

 コメント3件
RubyでシンプルなWebSocketサーバーをゼロからつくってみた
!https://www.honeybadger.io/blog/building-a-simple-websockets-server-from-scratch-in-ruby/本記事はこちらの英語...
  • 1:以下、名無しがお送りします

    WebSocket使ったサイトって難しいよな

  • 3:以下、名無しがお送りします

    HTTPと違って サーバーとクライアントが双方向に通信できるんだよな

  • 7:以下、名無しがお送りします

    >>3 そうそう 接続を確立したらメッセージのやり取りができる

  • 11:以下、名無しがお送りします

    よくチャットとか作るのに使われるよな

  • 17:以下、名無しがお送りします

    セキュリティはどうなの? HTTPSみたいに暗号化とかできるの?

  • 27:以下、名無しがお送りします

    >>17 WebSocketでもwssスキームを使えば TLS暗号化通信ができるよ

  • 37:以下、名無しがお送りします

    >>27 なるほど 平文で通信するのは危ないもんな

  • 39:以下、名無しがお送りします

    認証とかはどうするの?

  • 41:以下、名無しがお送りします

    >>39 WebSocketの仕様では認証についてはあまり触れられてないんだよね

  • 50:以下、名無しがお送りします

    >>41 なので認証周りは自前で実装する必要がある

  • 55:以下、名無しがお送りします

    >>50 例えばクッキーやAuthorizationヘッダーを使ってトークン認証するとかかな

  • 64:以下、名無しがお送りします

    WebSocketって同時接続数とかどのくらいまでいける?

  • 71:以下、名無しがお送りします

    >>64 それはサーバーのスペックとかにもよるけど 数万とかいけるらしいよ

  • 74:以下、名無しがお送りします

    >>71 ただ大量の接続を捌くには適切なアーキテクチャ設計が必要だな

  • 81:以下、名無しがお送りします

    あとはDDoS対策とかも考えないとな

  • 89:以下、名無しがお送りします

    >>81 そうだね WebSocketはコネクション張りっぱなしだから DoS攻撃とかに弱い

  • 90:以下、名無しがお送りします

    >>89 ロードバランサーとかでトラフィック分散するのが良さそう

  • 97:以下、名無しがお送りします

    あとはクライアント側の実装で気をつけることってある?

  • 104:以下、名無しがお送りします

    >>97 WebSocketの接続が切れたときの再接続処理とかかな

  • 106:以下、名無しがお送りします

    >>104 あとエラーハンドリングもしっかりやらないと

  • 116:以下、名無しがお送りします

    データのやり取りって主にどんな感じでやるの?

  • 119:以下、名無しがお送りします

    >>116 JSONとか使うのが一般的だと思う

  • 128:以下、名無しがお送りします

    >>119 サーバー側でJSONにエンコードして クライアントで受け取ってデコードする感じ

  • 136:以下、名無しがお送りします

    1つのWebSocketでいろんな種類のデータを送受信したい場合はどうするの?

  • 141:以下、名無しがお送りします

    >>136 メッセージの種類を識別するためのフィールドを用意するのがいいかも

  • 149:以下、名無しがお送りします

    >>141 typeとかeventみたいなフィールドをJSONに入れて それで処理を分岐させるとか

  • 154:以下、名無しがお送りします

    WebSocketってHTTP通信に比べてどのくらい速いの?

  • 158:以下、名無しがお送りします

    >>154 一般的にはWebSocketの方が速いと言われてるね

  • 166:以下、名無しがお送りします

    >>158 ヘッダのオーバーヘッドが少ないし コネクション確立の手間もない

  • 176:以下、名無しがお送りします

    >>166 用途に合ってれば レイテンシを低く抑えられるのがメリットだね

  • 182:以下、名無しがお送りします

    逆にWebSocketを使うのに向いてないユースケースってある?

  • 191:以下、名無しがお送りします

    >>182 単発のリクエスト/レスポンスでいい場合はHTTPの方が向いてるかな

  • 192:以下、名無しがお送りします

    >>191 あとはサーバー側のリソース管理が大変になるから そこも考慮が必要

  • 195:以下、名無しがお送りします

    プロキシとかロードバランサーを挟むときの注意点は?

  • 199:以下、名無しがお送りします

    >>195 WebSocketの場合 アップグレードリクエストをちゃんと処理できるものじゃないとダメだね

  • 206:以下、名無しがお送りします

    >>199 あとはタイムアウトの設定とか 適切にしないと切断されちゃう

  • 214:以下、名無しがお送りします

    全体的にWebSocketのデメリットって何かある?

  • 221:以下、名無しがお送りします

    >>214 コネクション管理が大変なのと ブラウザとサーバー両方で対応が必要なのがデメリットかな

  • 226:以下、名無しがお送りします

    >>221 あとは障害が起きたときの影響が大きいところとか

  • 232:以下、名無しがお送りします

    なるほど WebSocketを使うときは メリットデメリットをよく理解した上で設計するのが大事だね

コメント(3件)

  • 1

    wss必須だよねやっぱり

  • 2

    同時接続数えぐい サーバー頑張れ

  • 3

    typeフィールド便利そう 実装してみるか