0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

websocketを用いたAPIとMPAは相性が悪い?

Posted at

websocket-APIとREST-API

適当な説明↓

  • WebsocketはWebで軽量な双方向通信を行うことができるプロトコルとして知られています.
  • RESTはHTTPプロトコルを用いてデータのやり取りを行うことができます.

問題

Websocketを用いたAPIはMPA(multi page application)に適していないのでは
Websocketを使ってRPC形式のAPIを作っていた時に思ったのですが,ページ読み込み時はRESTより若干遅いです.

なぜ遅いのか

MPAでwebsocket-apiが遅いと感じるのは,単純ですが1回ハンドシェイクを挟むためです.
図に表すと分かりますがページ遷移時にWebsocket-APIを叩く場合は,最大でRESTの2RTT分遅くなってしまいます.

websocket-api v.s rest
          websocket                            REST
  server               client    │  server               client            
    ------upgrade req----->      │    -------api req------->
      handshake via http         │       hit api via http
    <--switching protocol--      │    <------api res--------
                                 │
      ↓ estab ws conn            │ 
    -------api req-------->      │
      hit api via ws             │
    <------api res---------      │

MPAでは,websocketのコネクションはページ遷移するとともに失われてしまいます.よって,ページ遷移時にはコネクションを再度繋ぎなおす必要があります.
更に,MPAではページ表示時にデータを取得する事が多いため,コネクション確立が遅い分websocketを使う旨味は...
ただし,繋いでさえいれば速いのでSPAとは相性がいいはずです(フロントはあんまり知らないので適当())

対応策

  • フロントをSPAにする.
  • Websocket-APIの他に同じ機能を持ったREST-APIをもう一つ作って,ページ遷移時はRESTだけを叩くようにする.
  • 諦めてRESTだけにする.
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?