- + JavaScript の質問用スレッド vol.118 + [転載禁止]©2ch.net
369 :デフォルトの名無しさん[sage]:2015/11/28(土) 00:07:51.49 ID:zYBVt+cc - audioContext.currentTimeはPCでは実装できたのですが
iPhoneだとどうもaudioContext.currentTimeは動作しないらしく 値が0に固定されるようなのでトライしたものの残念な結果になりました >>364,365 seIntervalはそこまで信用していないのですが 20msだろうと、それが50msになろうと、 呼び出した中でDate.now()の返り値が正常であれば それにoffsetを足して表示するだけの話なので setIntervalが不安定でもそこまで問題ないように思えるのですが・・・ まぁさすがにsetIntervalが200msくらい遅れるとかなら困りますが・・・ >>366 システムの仕様は明かされていませんが ほぼ合流不可能な中でこれまで同時押しでかなり高確率で合流できています 時刻合わせしなかったらまず合流できることはありません まだ時計の精度は悪かった時よりも NTPで時刻の精度を上げて以降、合流できる確率が上がったのも事実です(体感ですが) >>368 TS3って調べてみたのですがボイチャですか? 最終的に不特定多数の人に公開したいツールなので ボイチャはちょっときついかもです ということで・・・、audioのcurrentTimeがダメだったので もう少し別のやり方を検討してみます
| - + JavaScript の質問用スレッド vol.118 + [転載禁止]©2ch.net
372 :デフォルトの名無しさん[sage]:2015/11/28(土) 04:19:17.89 ID:zYBVt+cc - performance.now()というaudioのcurrentTimeと似たような関数があったので、それで実装してみました。
iOSでも動作するようです。 時刻をNTPで合わせた瞬間からの経過時間を計測し その経過時間を加算して現在時刻を表示するというアルゴリズムで実装しました Date.nowは一切使ってません。 performance.now()は結構精度がいいようで 割と時刻が同期されるようになりました ただ、iPhoneがスリープ状態に入ったときにカウントが止まってしまうので それが問題になりました。 それは、スリープを検知するような関数を実装して スリープを検知したらページをリフレッシュするようにして解決しました。 これで今のところ何時間かたってもほとんどズレがないようになったような気がします。 もう少し運用してみないと分かりませんが・・・ とりいそぎ、同じ状況で困った人がいたときのためのメモ書きです。 ちなみに色々調べてたらDate.now()というかnew Date()もそうなんですが どうも動作が遅いようです。 http://konbu13.hatenablog.com/entry/2014/02/08/113447 のページによると140ms〜230msかかっているようで 確かにその時間は僕のやりたいことから考えるとクリティカルな遅さです iOSとかは特にその遅さの影響を受け安かったんですかね・・・ その他リソースの使用状況にもよるかもしれませんが とりあえず割といい精度になってきたので書き込みはこれで最後にします 色々情報くれた方ありがとうございました、助かりました。
|
|