2011-01-06 16 views
2

私はFullCalendarアプリケーションに同時にアクセスしているが、別のコンピュータから2人のユーザーがいて、リフレッシュボタンを押さずに他のユーザーの予定の更新を見ています。何か提案がありますか?多くのありがとうRefetchEvents FullCalendar

答えて

2

refetchEventsすべてのソースからイベントを取得して再レンダリングする必要があるので、何が失敗しているのか不思議です。また、変更があった場合、どのようにサーバーにプッシュされていますか?あるいは、変更はクライアントのみにとどまっていますか?他のクライアントがイベントを取得できるように、各クライアントからサーバーにイベントを保存していることを確認する必要があります。 FullCalendarを呼び出してclientEventsを呼び出すと、現在クライアント側に新しいイベントを保存しているかどうかを確認できます。それがあなたに返すものを見てください。その場合は、selectなどのイベントが追加されたときや、それをサーバーに保存しているイベントを追加するために使用しているその他の方法を必ず確認してください。

定期的に投票できます。定期的にrefetchEventsを呼び出すJavaScriptをsetIntervalに設定してください。このアプローチの欠点は、イベントを継続的に再描画することです。イベントを含むデータベースまたは他のソースが更新されたばかりのタイムスタンプだけをサーバーにポーリングし、更新時にrefetchEventsを呼び出してもかまいません。それをサポートするサーバーを使用している場合は、cometを使用してサーバーから情報をプッシュすることも考えられます。

私は世論調査のいくつかの並べ替えをしていた場合は、ここで私がしようとするものです。

// set this before calling the calendar 
var timeLastUpdated = new Date().getTime(); 

function pollForNewEvents() { 
    var url = "/path/to/server/check"; 
    $.get(url, {"timeLastUpdated": timeLastUpdated}, function(data) { 
     data = parseInt(data, 10); // assume data is milliseconds since epoch 
     if(data > timeLastUpdated) { 
      $("#calendar").fullCalendar('refetchEvents') 
      timeLastUpdated = data; 
     } 
    }); 
} 

setInterval("pollForNewEvents()", 10000); 
関連する問題