web-dev-qa-db-ja.com

同じアプリケーションにRESTful HTTPとWebSocketがありますか?

アプリケーションがすでにライブフィード用にWebSocketを開いている場合、AJAXを介してサーバーとの他の通信にそれを使用する必要がありますか?

接続はすでに開かれているので、Request/Responseでリアルタイムではありませんか?

RESTful HTTPリクエストの方がデバッグしやすいためです。 URLまたはcurlsを備えたブラウザを使用して、APIが返すものをテストできます。 WebSocketを開くためにコードを記述する必要はありません。

RESTful HTTP APIWebSocketは同じアプリケーションにありますか?

18
Marc

Websocketの主要な設計目標の1つは、HTTPおよびWebsocketプロトコルの両方を同じポートで通信できるようにすることです。これは、クライアントがHTTPアップグレードリクエストでWebsocketハンドシェイクを実行することを明示的に要求することでこれを実現します。このようにして、サーバーは標準のHTTP要求接続と、永続的な双方向二重接続にアップグレードされたHTTPアップグレード要求を処理できます。

つまり、これは間違いなく有効なユースケースですが、特定のアプリケーションに対してこれを行うべきかどうかは、まったく別の問題です。 WebSocketは便利で、サーバーが非送信請求データをクライアント(ライブフィード)に送信できる必要があるシナリオがある場合に役立ちます。 HTTPプロトコルとRESTサービスは、データの同期クライアント送信請求をブロックする場合に役立ちます。

これらの両方がアプリケーションにとって意味を成すような要件である場合は、必ず両方を使用する必要があります。ただし、サーバーとの唯一の対話がライブフィードベースの場合、RESTサービスは適切ではありません。デバッグの容易さは、 システム品質属性 設計を設計する必要があります。

15
maple_shaft