私は1つのプロジェクトで反応を覚えてから使用しようとしています。このように、このコントローラからデータをフェッチデータを取得するときにsetIntervalを使用する必要がありますか?
...
def index
@users = User.order(created_at: :desc)
respond_to do |format|
format.json { render json: @users}
end
end
...
そして、もう一つの成分::私はJSONを出力コントローラ(レールで)持って
...
fetchData() {
fetch('admin/users.json', {credentials: 'same-origin'})
.then(function(response) {
return response.json()
}).then(function(json) {
this.setState({data: json})
}.bind(this))
.catch(function(ex) {
console.log('parsing failed', ex)
});
};
...
をそれは、このデータを提示することは難しいことではありませんが、最高のは何ですか管理者にこのデータを表示させる方法はありますか? たとえば、管理者にユーザーの削除を許可する必要があります。私は、サーバーに要求を送信し、1人のユーザーを削除する方法を知っている:
...
fetchData() {
fetch('admin/users.json', {credentials: 'same-origin'})
.then(function(response) {
return response.json()
}).then(function(json) {
this.setState({data: json})
}.bind(this))
.catch(function(ex) {
console.log('parsing failed', ex)
});
};
...
しかし、同じリストまたはテーブルで作業してユーザーを削除する2管理者がある場合は?私がredirect_to /some/index.htmlを使用して反応する前に、サイトがリフレッシュされ、管理者がデータベースの現在の状態を確認しました。私は今、サイト全体のリフレッシュを避けるためにしようとしていると私の最初に考えたのは、第二の各半分のデータをフェッチすることでした:
...
tick() {
this.fetchData()
};
componentDidMount() {
setInterval(()=> this.tick(), 500)
};
...
今すぐ管理者がそれぞれ0.5秒、DBへのリクエストを行い、現在のデータを取得するが、これをあります本当に良い解決策ですか?
まあ、サーバーからのデータでサイトを自動的に更新するには、ポーリングソリューション(これまでのことです)をセットアップするか、WebSocketを使用する必要があります。 –
私の提案はWebSocketベースのソリューションを使用することです。これはサーバー側で変更が発生するたびに管理画面を更新します。 SignalR for .NETベースのソリューションか、Javaベースのソリューション用のsocket.jsを見てください。 – Knitesh
私は他の2つのコメントで前に言ったことを言いますが、ソケットはあなたの友人になると思います。 –