nodeJsでロングポーリングを使用して、ソーシャルネットワークのような通知を実装しました
データベース、私は redis と cassandra を使用しています
タイムスタンプを「user_read」としてredisに保存しました
ユーザーが通知を読むたびに、「user_read」を更新します
データベースが「user_read」より大きいタイムスタンプの通知を受け取ったとき
ユーザーに返信します
私のコードはこのようなものです
function(req, res){
longPoll()
function longPoll(){
async.waterfall([
connectDB,
getNotification
],function(err,data){
if(there's no notification timestamp larger than user_read){
setTimeout(longPoll, 1000);
}else if(there's new data){
res.json(data);
}
if(con)
con.close();
})
}
};
ここに私の質問があります:
- ここで setTimeout を使用していますが、適切ですか? おそらくnextTickまたはsetIntervalを使用しますか?
- DB からクエリを実行した後は毎回接続を閉じる必要がありますか?それとも、応答するときに 1 回だけ閉じる必要がありますか?
- 提案を最適化し、最適化したいですか?