Webアプリとして共有カレンダーを作成しようとしています。誰かがカレンダーにイベントを追加するとき、そのカレンダーを共有しているすべての人にそのイベントも表示してもらいたいです。誰かがイベントを作成するとき、私はデータをデータベースに送信するajaxを作成しました。サーバーからページ上でオンラインで同じカレンダーを共有している他のクライアントにイベントを送信する方法はありますか?私は今、データベースからの情報を絶えず「更新」することによってそれを行いました。誰かがこれをどのように作ることができるかについての手がかりを持っているなら、私に教えてください。
1 に答える
Webサーバーに情報をブラウザに「プッシュ」させたいというのは昔からの問題です。これを処理する従来の方法は、アクティブなクライアント(つまり、ページを開いたままアプリにログインしているユーザー)が定期的にサーバーを継続的に「ポーリング」して、新しい情報があるかどうかを確認することです。あなたの場合、ページ上のいくつかのJSに10秒ごとにAJAX呼び出しを行わせて、彼らが知っておくべき新しいカレンダーイベントがあるかどうかを確認することができます。これにより、Webサーバーへの全体的なトラフィックが増加するため、ポーリング時間を適切に選択します。そうしないと、これらの「何か新しいものはありますか?」の処理にすべての時間を費やすため、Webサーバーが機能しなくなります。ほとんどの場合、存在しないときに要求します。
もう少し最先端になりたい場合は、HTML5WebSocketをご覧ください。「html5websocketsチュートリアル」をグーグル検索すると、たくさんのリソースが得られるはずです。それらは使用するのが少し難しいので、それらをサポートするWebサーバーを実行している必要があります(おそらくそうです)。これをサポートするブラウザの場合、より長期間のオープン接続を維持できます。この接続では、必要に応じてWebサーバーからブラウザにデータをプッシュして戻すことができ、JSは更新された情報を使用して「onmessage」イベントをキャプチャします。グーグルにあなたを向けることは、より完全な答えから抜け出そうとしているわけではありませんが、そこにはすでに多くの優れたチュートリアルがあるので、HTML WebSocketを探してください、そしてあなたはあなたが探していることをやってのけることができるはずです。