Railsで作ったアプリケーションにFacebookやWantedlyのような直接会話できるメッセージ機能を持たせたい。する質問をすることでしか得られない、回答やアドバイスがある。3JavaScriptを有効にしてくださいRailsで作ったアプリケーションにFacebookやWantedlyのような直接会話できるメッセージ機能を持たせたい。現在Railsアプリーケーションを作成してHerokuへのデプロイを終えています。評価機能、フォロー機能、お気に入り機能などの多対対の関係構築などは問題なくこなせます。APIを使ったサービスの構造がいまいち理解できず、Facebook,TwitterログインなどのAPI周りの作業に苦戦してます。実現したいことユーザー登録にDeviseを使用しているのですが、その各ユーザーに紐付いたプライベートなメッセージ機能をもたいせたいと考えております。条件authenticate_user!が自分のページからまたは送信先ユーザーのページにて「ダイレクトメッセージ」ボタンを押すことで、送信者として自分の(current_user)idを紐付けたメッセージ空間を作成。その空間に保存された内容を観れるのは招待したauthenticate_userと招待されたauthenticate_user!のみに限定する。試しにPusherで先人方のブログを参考にしながら進めた結果、リアルタイムに更新されるChatルーム作成までは来れました。その構造を掴めていません。メッセージも一度ページを閉じると消えてしまっています。ように作成し、リレーション構築、DBに保存させる処理のコーディング作業を取らなければいけないということでしょうか?簡潔にまとめますと、FacebookやWantedlyのような直接会話できるメッセージ機能を持たせるには、どのような作業が必要になるのか?です。プログラミングを始めて2か月ほどで、ところどころ分からないところもあり、こう言った外部APIなどを利用する知識が浅いため、分からなくなってしまいました。知恵をお貸しください。回答に必要な情報あれば、すぐに載せます。attachmentクリップ2気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。件sort評価が高い順sort新着順sort古い順linkcheckベストアンサー0プログラムをはじめて2ヶ月との事ですので、ちょっと難しいかもしれませんが、、、まず、よくサンプルである、Websocketを使ったチャットルームは、あるクライアントから送信されたメッセージを、他の接続クライアントへ配信する機能だけのものがほとんどです。ブラウザ閉じればきえてしまいますし、配信側と、受信側がともにオンラインでないと、メッセージは送受信されません。同時オンラインの場合にのみ有効な方法です。そこで、すでにお気づきのようですが、クライアントから受信したメッセージは、一度サーバ側で、何かしらの方法で蓄積する必要があります。DBでもいいですし、NoSQLでも、ファイルでも、何でもいいですが、蓄積をしておきます。次に、クライアントの接続状態を見極めます。オンラインになっているユーザには、メッセージをそのまま配信すればいいですね。ここで、面倒なのは、過去のオンライン時に、どこまでクライアントがメッセージを受信したかを管理しないと、重複してメッセージを送ってしまうとか、途中歯抜けになってしまうとか、そのような状態になってしまいます。どこまで、送信したか履歴を管理するか、毎回全部おくっちゃうとか!(ネットワークに申し訳ない!)まあ、考え方はさまざまです。オフラインのユーザには、Push通知でも送ることになるのでしょうか。オフラインのユーザが、オンラインになったら、メッセージを取りにこさせるとか、その導線をどうクライアントに組むのかとか、サイレントプッシュであらかじめダウンロードさせるとか?ここもいろいろやり方はありかと。複数の端末で、同一アカウントにログインしていたとき(PCとスマホとか)の考慮も必要です。他の端末で閲覧したメッセージは、既読あつかいしないとですね。どこまでメッセージ保存しておきましょうか?GoogleやFaceBookのような、莫大な資産があれば、消さないでどこまでも持っておけますが、普通はある程度で消すとかしないと、DBパンクします。有料サービスにするのか、とか、、、そして、最後に一番やっかいな問題です。完璧なプログラムはありません。何かしら不具合はでるものです。チャットのようなプログラム作りました、リリースしました。運用はどうするか、結構きめておかないと、大変なことになります。24時間、誰が監視するのか?また、どの程度のユーザ数を見込むのかなどによって、サーバの構成やら、なんやら、スケーラビリティー、云々・・・。大がかりな仕事になることが予想されます。ここに、こんな感じのサンプルあるよ、とか、こんな感じで書いてみれば、と簡単にできることではありませんので、、、もし、本気ではじめるなら、覚悟して取りかかってください。したらチャットエンジンのようなサービスを提供しているサイトとかあるかも?なので、そのあたりにおんぶに抱っこが現実的かもしれません。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。早々のご回答、感謝申し上げます!順序立った説明で大変わかりやすく、これからやろうとしていた作業の莫大さがわかりました。他のブロガーさんを見る限り、この作業にはちゃんとしたjavascriptの知識も必要なことが初心者なりにも分かりますし、ベストなのは勉強を継続してしっかりとしたサービス運営など多分野の知識もついた時、改めて挑戦しようと思います。「更新」ボタンを置いたとして、それを押すことで前回表示時から欠けている新情報を補う。【オフラインのユーザには、Push通知を送り、オフラインのユーザが、オンラインになったらメッセージを取りにこさせる】といった方法で、簡潔なものを作るのは理屈的に可能でしょうか?これも後々継続して手間がかかったり、重い作業になるのでしょうか?お手数おかけいたします。順序立った説明で大変わかりやすく、これからやろうとしていた作業の莫大さがわかりました。他のブロガーさんを見る限り、この作業にはちゃんとしたjavascriptの知識も必要なことが初心者なりにも分かりますし、ベストなのは勉強を継続してしっかりとしたサービス運営など多分野の知識もついた時、改めて挑戦しようと思います。「更新」ボタンを置いたとして、それを押すことで前回表示時から欠けている新情報を補う。お手数おかけいたします。20:58規模を小さくして、最大20件程度ということであれば、DBでゴリゴリ書いても、なんとかなってしまうでしょうから、ぜひチャレンジされるとよいかと思います。その場合には、いわゆる昔の「掲示板」的なプログラムになると思います、こちらは結構サンプルなどあるのではないかと思います。規模を小さくして、最大20件程度ということであれば、DBでゴリゴリ書いても、なんとかなってしまうでしょうから、ぜひチャレンジされるとよいかと思います。その場合には、いわゆる昔の「掲示板」的なプログラムになると思います、こちらは結構サンプルなどあるのではないかと思います。