前提・実現したいこと
ionicで、チャットアプリを作ってます。
typescript、htmlを使ってます。
データベースは、firebaseのものを使ってます。
トークルーム、トークルームリストのページを作ってます。
LINEのようなイメージです。
DB設計は以下の通りです
firebaseの場合はツリー構造上になってます。
message(メッセージごとにmessageidが付与され随時ここに追加される)
|-messageid -|from
| |to
| |text
| |roomid
.
.
|
room(トークルームごとにroomidが付与され随時追加される)
|-roomid-|-member-|-memberid1
| |-memberid2
|
.
.
user
|-userid-|-name
| |-birthday
| |-room-|-roomid1(参加しているトークルームのid)
| |-roomid2
トークルームリストは、user/userid/room以下をフェッチし、
参加しているトークルームを取得して表示します。
トークルーム内では、message以下を見て、現在表示しているトークルームのroomidに紐づいたメッセージを
取得し表示します。
発生している問題
roomidを新規に生成するタイミングで困ってます。
チャット機能の処理フローは以下です。
友達リストの中から、メッセージする相手を選ぶ
↓
既にトークしている相手?既にroomidある?
↓YES ↓NO
roomid取得と同時に トークルーム画面に遷移(この時点でまだroomid無)
トークルーム画面に遷移
↓ ↓
messageノード以下を監視し
roomidに紐づけられた 新規メッセージ送信時にroomidを生成
メッセージがあれば
DBからデータを取得し
画面表示
以下のケースで、どういった処理をしたらいいのかわかりません。
userAとuserBがいたとします。
このユーザ達のトークルームはまだありません。
userAは、友達リストの中からuserBを選択し、メッセージ画面に遷移します。
userBも、userAを選択し、メッセージ画面に遷移します。
ここで、双方が同じタイミングでメッセージを送信します。
現状だと、同じメンバーなのに、roomidが異なるトークルームが2つできてしまいます。
自分が送信したい相手とのトークルーム画面にいる際に、相手からメッセージがきた場合、どういった処理
をしたらいいのかわかりません。
もともとroomidがあるユーザ同士のトークルーム画面では、message以下のroomidに紐づいたものを監視していますので、特に問題はありません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/09 03:19