質問: Milkcocoaを使って、簡単なリアルタイムモニタを作成しようと思っています。 ある端末でデータをpushして、pushしたデータがきちんとデータベースに入っていることは、データストアのリスト表示で確認できましたのですが、そのデータを別の端末でリアルタイムに表示し続ける方法がよくわかりませn。 molkcocoaのドキュメントを見ると、pushしたデータは、getで受け取るとあるのですが、チューとルアルを見ますと、スマホを傾けると、PCでその傾きをキャッチできるサンプルあり、そのPC側のサンプルを見る限りでは、 ``` ds.on('send', changeViewFromSentMode); ``` このようにonイベントを設けて、onイベントの引数として、値取得のプログラムを記述しているように見えます。 リアルタイムでpushデータを受信してそのデータを表示させるのは、getではなく、onを使うのでしょうか? それとも、これはsendのデータを受信する方法であり、pushデータは、やはりgetを使うのでしょうか? また、getを使う場合、リアルタイム表示させるために、jQuwry側でタイマーか何かでループし続ける必要はあるのでしょうか?
回答: ドキュメントを見るとって書くのであれば、リンクを貼っていただけると解答しやすい質問になると思います。 おそらく、このページを参考にされたのだと思って解答します。 そこに、 > > ds.on('send', function(sent){ /* コールバック関数 */ })でsend()メソッドを監視します。「監視する」とは、milkcocoa.dataStore('gravity')にsend()が発行されると、コールバック関数を実行するといった意味です。 > > > と書かれています。これはsendで送ったときに発生するイベントです。言葉の意味がわからなければ、コールバック関数等でぐぐってみてください。 今回の場合そうではなくて、別の端末でpushされているようなデータをリアルタイムで受け取りたいのだと思います。そういう場合は、普通にgetで値を取得するのが普通だと思われます。 以下は、公式のリファレンスを元に1秒毎にgetするように改良したものです。 ``` #データストア名等は適宜変更してください。 var get_data = milkcocoa.dataStore('users').get('fred', function(err, datum) { console.log(datum); /* { id: 'fred', timestamp: 12345... , value: { ... } } */ }); setInterval(get_data, 1000); #1000msつまり1秒ごとに実行する ```