角度-帆を使用sailsjsバックエンドは通常、このように呼ばれる:バックエンドでハンドル接続損失:reperform要求または再送応答
this.doSomethingWithItem = function(itemID, callback){
$sails.put('/item/doSomething', {itemID:itemID}).
success(function (data, status, headers, config) {
callback(data);
}).
error(function (data, status, headers, config){
alert('Error!');
});
};
は、帆(v0.11.0)のほとんどは、コントローラの機能はかなり単純です。例としては、次のようになります。
doSomething: function(req, res) {
var p = req.params.all();
postgresClientPool.connect(function(err, client, done) {
client.query("SELECT item_do_something_in_this_awesome_function($1) AS dbreturn", [p.itemID], function(err, result) {
done();
if(err) {
res.status(500).json({success: false});
}
else {
res.json(result.rows[0].dbreturn[0]);
}
});
});
}
今、私たちは(クライアント/ブラウザとnodeJS /帆 - サーバ間の)かなり頻繁にではなく、短い接続損失を経験している影響を与えることができない理由のために。タスクは、ユーザーに対してできるだけスムーズに処理し、それ以上の不都合を回避するようになりました。要求がサーバーに到達する前または後に、接続の中断が発生した場合
- チェック:継続的な要求中に接続が中断された場合
ので、ロジックが何かのようにする必要があります。
- 以前に発生した場合:要求を再実行してください。
- その後に発生した場合:バックエンドにリクエストの結果を再送信するように指示します。
これを実現する方法は?
各サービス機能に$sails.on('disconnect'...
を登録するのが最善の方法であるかどうかわかりません。そして、とにかく、関数の実行が終了した後、それらをどのように登録解除するのかはまだ分かりません。
標準HTTPを使用しているため、バックエンドによる自動再送応答のオプションは使用できません。 Angularアプリでインターセプターを使用することをお勧めします。リクエストが接続を失った場合は、もう一度送信してみてください。 あまり複雑ではありません。 –