websocketを用いたAPIとMPAは相性が悪い?
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 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だけにする.
Author And Source
この問題について(websocketを用いたAPIとMPAは相性が悪い?), 我々は、より多くの情報をここで見つけました https://qiita.com/rubbishmt/items/821c1355c7476001711e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .