質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

260閲覧

Google Firebase Cloud Functions:「時間差の処理」のある関数をサーバー側で実行したい

s.wad

総合スコア8

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

4クリップ

投稿2018/11/06 06:39

GoogleのFirebase Realtime Databaseを最近勉強し始め、
習作にとりかかっている中でご質問させていただきたいことがあります。
内容としては、Cloud Functionsでデータベースの変更を関知してから
●●秒後に特定の処理を行う、という時間差の処理を実現するための方法を探しております。
下記、お目通しいただけると大変たすかります。

●作っているもの

リアルタイムで一つの空間を共有するシンプルな「オンラインドミノ倒し」
- 複数人が入室できる

  • プレイヤーはドミノを「ひとつ積む」か「倒す」かだけを選択できる

 - 誰かが「倒す」を選択すると全プレーヤーの画面が「ドミノが倒れている最中」になる

  • 「ドミノが倒れている最中」は、どのプレーヤーも上記の選択はできない
  • 「ドミノが倒れている最中」に入室してきたプレーヤーについても同様

●悩み

あるプレーヤーが「倒す」を選択して「ドミノが倒れている最中」というステータスにした後、
「ドミノが倒れ終わった」というステータスに戻す処理はサーバー側で行う必要があると考えています。
なぜなら「倒す」を選択したユーザーが直後に退室したり、全プレーヤーが退室したとしても
その仮想空間では「ドミノが倒れている最中」のステータスを維持しなければいけないからです。
具体的には、「倒す」を選択したユーザーは同時にサーバー側に「ドミノの本数」を送り、サーバー側では受け取った本数×1 秒後に「ドミノが倒れている最中」のステータスを解除する、という処理を行いたいです。

●思いついている手段と問題点

 0. Cloud FunctionsでsetTimeout的な関数を記述する ⇒実行自体は可能なようなのですが、秒数が長いとタイムアウトになり、また利用料金にも跳ね返るリスク
0. 外部のCronサービスから呼び出す ⇒公式で紹介されていた方法ですが、今回は秒単位で管理したいのと、定期スケジュールでの実行とは考え方が違うので、相性が悪い?と踏んでいます。

実現したいこと(作っているもの)はシンプルなはずのですが、
自分の頭では良い方法が思い浮かばず、良いアイデアを教えていただけると嬉しいです。
何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問