2012-04-19 6 views
0

私は、レスポンスをフォーマットし、クライアントに応答し、クライアントがレスポンスを受け取った場合にのみデータベースに何かをコミットするアクションを望みます。私がafter_filtersについて理解していることから、クライアントに送信される前に応答を傍受するだけです。何か案は?クライアントへの応答が成功した場合にのみ、Railsで何かできますか?

+0

これは非常に愚かです。なぜクライアントが何かを要求してからあなたの応答を無視すると思いますか?クライアントから何らかの確認を得ることはできませんし、クライアントを探す必要もありません。可能であれば、レスポンスにJavaScriptを組み込んで*秒のリクエストをトリガし、データベースへの書き込みをリクエストすることができます。あなたはこれを行うべきではありません。 – meagar

+0

詳しくは、接続レベルの失敗を参照しています。 HTTP 200レスポンスが失敗した場合にのみ、取引をしたいと思います。私がAPIのエンドポイントを提供していて、私の呼び出し元が私が行ったことを確認できないことをしたくない理由はたくさんあります。 –

+0

TCP/IPのままにしておきます。あなたがクライアントがあなたの応答を無視した場合、それはあなたの問題ではない層で動作しています。 – meagar

答えて

0

私が知る限り、クライアントが追加の要求を送信するようにクライアントに指示する以外のアプリケーションレベルでメッセージを受信したことを確認する信頼できる方法はありません。 javascriptで。

クライアントに200のメッセージを受け取るのではなく、APIを使用して成功したトランザクションのリストをAPIの他の場所に置くことで、クライアントがそのリストを積極的に訪問してトランザクションが行われることを確認できます。

0

これは他の解説者にもかかわらず、これは妥当なことだと思います。私は承認を送るjavascriptを書く彼のアプローチに同意する。

私はトランザクションをその期間開いたままにしないので、暫定フラグを付けてデータを保存することをお勧めします。謝辞を受け取ったら、そのデータを確認済みとしてマークしてください。

関連する問題