3

ejabberd を既存の Rails アプリに統合してチャット部分をサポートしようとすると、深刻な頭痛の種になります。これが真実になった人なら誰でも、現在問題が発生している原因に最善のアプローチをする方法についての洞察を共有できることを願っています.

私の目標:

1.これを簡単にバックアップできるように、すべてのデータをmysqlデータベースに保存します。 これまでのところ、mysqlドライバーを使用してejabberdのmysqlの使用をセットアップしました。

2.お互いの名簿からユーザーを簡単に追加および削除します(フレンド接続の追加および削除)。このために、モジュールrestとmod_admin_extraをセットアップして、Railsアプリからejabberdへのrestfull呼び出しを実行できるようにしました。ejabberd 管理モジュールを使用すると、ユーザーを追加および削除できますが (オーバーフロー: https://stackoverflow.com/a/5229902/355281 ) この著者は、mysql にデータを保存することはできないと述べています Mnesia は mod_admin_extra によって常に使用されます

3. 一時的にユーザーをお互いのリストに追加するか、できれば 2 人のユーザーを追加するための一時的な部屋を用意して、このグループが存在する限りチャットできるようにします。これにアプローチする方法がわからない

このすべての問題

  1. すべてのデータを mysql に保存できるとは限らないため、データを粉砕する Mnesia & Mysql 、2 つの場所にデータがあり、mysql データベースを簡単にバックアップできないのは非常に悪い
  2. 残りのモジュールを使用してデータベースに何かを行う必要がありますが、それ自体は問題ありませんが、各フレンドリストに2人のユーザーを追加する方法は私には不明です。

ejabberd はすぐに使える最も完全な xmpp サーバーのようですが、上記の問題に取り組む別のサーバーを探す必要があるかもしれません。私のプロジェクトのこの部分は大きな頭痛の種でした.

例えば:

  • Facebook が ejabberd を使用した場合、これらの問題にどのように対処したのでしょうか?
  • 上記の問題に取り組む ejabberd のきれいな書き直しはありますか? おそらくまともなAPIを備えた商用xmppサーバーで、ユーザーを追加/削除し、データを1つの中央の場所に保存する方法はありますか?
4

1 に答える 1

2

すでに MySQL を使用しているため、Rails/MySQL Directly を使用して名簿を管理するだけです。DB で直接実行したくない場合は、完全に理解できますが、bosh ( http://xmpp.org/extensions/xep-0206.html ) を介してサーバーに接続できます。求めています。Rails に実装するためのガイドとして使用できる JS bosh クライアントがあります。これはhttp://strophe.im/と呼ばれます。 データを 2 か所に保持することに関しては、MySQL のすべての名簿固有のテーブルを保持する必要があります (または保持できる必要があります)。さらに、ほぼすべての永続的なデータを mysql に配置するように構成できます。ただし、これについて詳しく説明できるようにするために、特定の懸念事項と構成を確認してください。eJabberd は高度に構成可能で拡張可能です。私の経験 (eJabberd を 8 年以上使用している) では、基本的にどのような動作でも何らかの方法で実現できます。

于 2013-09-18T06:25:22.533 に答える