APIとさまざまなクライアント間の全二重通信を作成するにはどうすればよいですか?

デビッドD。

私のWebサイトでは、クライアント(不明な人)が私のサービスと対話できるようにするパブリックAPIを作成したいと思います。その場合、従来のRESTAPIが適切に機能します。

ただし、クライアントにもイベントを送信できる必要があります。これらのイベントは、クライアントのHTTPリクエストとは関係ありません。「webhooks」がこれに対処する方法だと思いました。私がよく理解していれば、Webhookを使用すると、サービスはHTTP POSTリクエストをクライアントが指定したURLに送信し、このリクエスト内にイベントデータを含めます。

WebSocketは、この全二重通信のニーズに対するソリューションとしても使用できると思います。

私が知りたいのは、クライアントが私のサービスと通信するために実装するのが最も簡単な方法はどれですか?ここで重要なのはシンプルさです。難しいのは、クライアントがさまざまなテクノロジー(HTTPサーバーを備えた完全なWebサイト、サーバーを備えていないiOS / Androidアプリなど)を使用できることです。

REST API + Webhookを使用する場合、クライアントにどのような影響がありますか?Websocket?等?選択する方法は?

それが明確であることを願っています(しかし確かではありません)。ありがとう:)

mansilladev

Webhookはもっと簡単な解決策だと思います。はい、ご存知のとおり、Webhookを使用すると、APIを使用する開発者がバックエンドがイベントデータをPOSTするURLを登録します。これは、APIで使用される一般的なパターンです。

Webhookデザインを使用することの大きな利点は、クライアント/サーバー接続を開いたままにする必要がないことです。結局のところ、イベントが頻繁に発生しない場合(つまり、1時間に数回、または1日に数回のみ)、または一貫した接続を開いたままにすることが課題である場合、必要なときにのみ接続を確立する方がかなり効率的です。

APIプロバイダーであるWebhookを使用する際の課題は、状態変化の検出と信頼性の高いWebhook呼び出しメカニズム(つまり、応答しない、またはエラーをスローするWebhookレシーバーURLを処理する)を処理するイベントバックエンドシステムを設計することです。

開発者側でWebhookを使用する際の課題は、サーバーからのイベントPOSTデータをリッスンする信頼性の高いWebサーバーを立ち上げる必要があることです。

リアルタイムAPI(つまり、Websocket、Bayeux / CometDに基づく)は、ライブ接続が新しい接続を確立する必要がないことを意味するため、非常に優れています。これは、非常にチャットの多いセッションで特に役立ちます。さらに、完全に焼き付けられたライブラリを使用してサーバーとクライアントの手間のかかる作業を処理しているプロジェクトや企業がたくさんあります。それらの1つはFanout.ioであり、可能な場合はXMPP、Bayeux、およびWebsocketを利用して、わずか数行のコードでクライアント/サーバー間でメッセージをプッシュできます。

(私はファンアウトと提携していませんが、使用しました)

したがって、要約すると、Webhookは、実装に必要なアーキテクチャに既に精通していることが主な理由で単純であり、パターンはよく使われています。持続的接続アプローチに傾倒している場合は、Fanoutのようなツール/プラットフォームを検討します。これは手間のかかる作業(つまり、サブスクライブ/パブリッシュ、同時接続スケール、クライアント/サーバーライブラリ)を処理するためです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

APIとRailsアプリの間に全二重通信を作成するにはどうすればよいですか?

分類Dev

'man'は、二重引用符を二重アクセントやプライム文字としてレンダリングしないようにするにはどうすればよいですか?

分類Dev

クラスのさまざまなインスタンスの「x」量を出力する関数を作成するにはどうすればよいですか?

分類Dev

さまざまな期間のビデオをブラックアウトするにはどうすればよいですか

分類Dev

さまざまなサイズのアイコンにcss背景スプライトを再利用するにはどうすればよいですか?

分類Dev

自動生成されたc#クライアントは、さまざまなタイプを返すことができるAPI呼び出しをどのように処理することになっていますか?

分類Dev

他の情報でさまざまなクラスターを表すネットワークを作成するにはどうすればよいですか?

分類Dev

キャンバス上にさまざまなテキストアートデザインを作成するにはどうすればよいですか?

分類Dev

ボタンを動的に作成し、さまざまなイベントハンドラーを追加するにはどうすればよいですか?

分類Dev

Qtのさまざまなボタンにさまざまなアイコンを設定するにはどうすればよいですか?

分類Dev

Xamarin Formsプロジェクトのさまざまなサイズの画像をすばやく作成するにはどうすればよいですか?

分類Dev

Graphvizで二重ラベルのエッジを作成するにはどうすればよいですか?

分類Dev

Unityでさまざまな解像度の柔軟なリストビューアイテムを作成するにはどうすればよいですか?

分類Dev

アレイ内のさまざまなスライスをすばやくマスクするにはどうすればよいですか?

分類Dev

/proc にディレクトリが二重に作成されないようにするにはどうすればよいですか?

分類Dev

iOS:サイズクラス(または他のソリューション)を適切に使用して、さまざまな縦向きと横向きのレイアウトを設定するにはどうすればよいですか?

分類Dev

KotlinでさまざまなレイアウトのViewPagerを作成するにはどうすればよいですか?

分類Dev

二重にリンクされたリストの数値が最大値と最小値の間にあるかどうかを確認するにはどうすればよいですか?

分類Dev

インタラクティブなクライアント側までの時間を計算するにはどうすればよいですか?

分類Dev

カラム値ごとにさまざまな数のアイテムを選択するにはどうすればよいですか?

分類Dev

さまざまなクラスを生成するファクトリメソッドをPythonで作成するにはどうすればよいですか?

分類Dev

jQuery ajaxリクエストで二重引用符がサニタイズされないようにするにはどうすればよいですか?

分類Dev

整数と二重のラッパーを比較するにはどうすればよいですか?

分類Dev

XMLファイルに二重エントリがないことを確認するにはどうすればよいですか?

分類Dev

さまざまなテンプレートタイプのハッシュ関数を作成するにはどうすればよいですか?

分類Dev

一重引用符または二重引用符の間にある値を取得するにはどうすればよいですか?

分類Dev

さまざまなサイズのリトルエンディアンの16進数を印刷するにはどうすればよいですか?

分類Dev

ボケでは、ポイントとパッチのさまざまな情報を表示するにはどうすればよいですか?

分類Dev

さまざまなサイズのQStackedWidgetのさまざまなページを作成するにはどうすればよいですか?

Related 関連記事

  1. 1

    APIとRailsアプリの間に全二重通信を作成するにはどうすればよいですか?

  2. 2

    'man'は、二重引用符を二重アクセントやプライム文字としてレンダリングしないようにするにはどうすればよいですか?

  3. 3

    クラスのさまざまなインスタンスの「x」量を出力する関数を作成するにはどうすればよいですか?

  4. 4

    さまざまな期間のビデオをブラックアウトするにはどうすればよいですか

  5. 5

    さまざまなサイズのアイコンにcss背景スプライトを再利用するにはどうすればよいですか?

  6. 6

    自動生成されたc#クライアントは、さまざまなタイプを返すことができるAPI呼び出しをどのように処理することになっていますか?

  7. 7

    他の情報でさまざまなクラスターを表すネットワークを作成するにはどうすればよいですか?

  8. 8

    キャンバス上にさまざまなテキストアートデザインを作成するにはどうすればよいですか?

  9. 9

    ボタンを動的に作成し、さまざまなイベントハンドラーを追加するにはどうすればよいですか?

  10. 10

    Qtのさまざまなボタンにさまざまなアイコンを設定するにはどうすればよいですか?

  11. 11

    Xamarin Formsプロジェクトのさまざまなサイズの画像をすばやく作成するにはどうすればよいですか?

  12. 12

    Graphvizで二重ラベルのエッジを作成するにはどうすればよいですか?

  13. 13

    Unityでさまざまな解像度の柔軟なリストビューアイテムを作成するにはどうすればよいですか?

  14. 14

    アレイ内のさまざまなスライスをすばやくマスクするにはどうすればよいですか?

  15. 15

    /proc にディレクトリが二重に作成されないようにするにはどうすればよいですか?

  16. 16

    iOS:サイズクラス(または他のソリューション)を適切に使用して、さまざまな縦向きと横向きのレイアウトを設定するにはどうすればよいですか?

  17. 17

    KotlinでさまざまなレイアウトのViewPagerを作成するにはどうすればよいですか?

  18. 18

    二重にリンクされたリストの数値が最大値と最小値の間にあるかどうかを確認するにはどうすればよいですか?

  19. 19

    インタラクティブなクライアント側までの時間を計算するにはどうすればよいですか?

  20. 20

    カラム値ごとにさまざまな数のアイテムを選択するにはどうすればよいですか?

  21. 21

    さまざまなクラスを生成するファクトリメソッドをPythonで作成するにはどうすればよいですか?

  22. 22

    jQuery ajaxリクエストで二重引用符がサニタイズされないようにするにはどうすればよいですか?

  23. 23

    整数と二重のラッパーを比較するにはどうすればよいですか?

  24. 24

    XMLファイルに二重エントリがないことを確認するにはどうすればよいですか?

  25. 25

    さまざまなテンプレートタイプのハッシュ関数を作成するにはどうすればよいですか?

  26. 26

    一重引用符または二重引用符の間にある値を取得するにはどうすればよいですか?

  27. 27

    さまざまなサイズのリトルエンディアンの16進数を印刷するにはどうすればよいですか?

  28. 28

    ボケでは、ポイントとパッチのさまざまな情報を表示するにはどうすればよいですか?

  29. 29

    さまざまなサイズのQStackedWidgetのさまざまなページを作成するにはどうすればよいですか?

ホットタグ

アーカイブ