0

すること

私が達成しようとしているのは、ソーシャル ネットワーク Web サイトのニーズを実行および処理するためのハイブリッド サーバーです。

建てる

私はそれをすべてPHPで作成し、データベースはMySqlです。リアルタイム更新のために、「x」秒ごとに新しいメッセージをチェックするAJAXショートポーリングを使用しました。しかし、再チェックの間に時間差を設けたくないので、長いポーリングを使用することにしました。これは Node.js+Socket.io を通じて実現されます。

問題

  1. 「NodeApp」がビルドされたら、Apache を使用している私の Web サイトに結合します。どうすれば両方を統合できますか? 例: ページは次のとおりです。

    • example.com/home.php #Apache
    • example.com/profile.php #Apache
    • example.com/messages #Node.js
  2. FB のようにリアルタイムで更新するために、php ページとその間のメッセージを node.js に書き込むにはどうすればよいですか (websockets を使用してから、サポートされているものにフォールバックします。これは [socket.io] を使用して行われます)。簡単な概要: http://postimg.org/image/p3vq4tkvr/

私が知っていること

  1. ノードで http-proxy を使用して、同じ URL を異なるポートで使用できます。
  2. VPN で 2 つの専用 IP を使用できます。1 つは Apache 用、もう 1 つは Node.js 用です。
  3. 間に iFrame を使用したくありません。
  4. ノードに www.example.com:3000 、Apache に www.example.com のような異なるポートを使用したくありません。
4

1 に答える 1

1

今やってることはほぼ同じです。私の経験をあなたと共有します。重宝するかもしれません。phpFoxにソーシャルネットワークエンジンを用意しました。Node.js (トランスポートsocket.ioとして使用) を使用して、個人的なメッセージのセクションを「盛り上げる」ことにしました。

PHP(phpFox)とNode.jsの接続に最初から問題がありました。ブリッジが見つかりました - dNode。このモジュールを使用すると、TCP プロトコルを使用して仮想サーバー間でデータを送信できます (多くの一般的なプログラミング言語用のドライバー dNode があります)。

次の問題 - データベース。最初に、テーブルのリスト (メール用) で MySQL を使用しました。

mail | mail_text | user | user_info

一部のテストでは、node.js で MySQL を使用することは合理的ではないことが示されています。このため、"Dialogues" (node.js に書かれた個人的なメッセージのコードネーム) に非リレーショナル データベースMongoDBを使用することにしました。スクリプトは Python によって作成されました (PHP も使用できますが、そのようなタスクには、Python を使用することを好みます - スクリプトの実行のパフォーマンスと速度が最高です)。これは、MongoDB に対して「一般的な」MySQL データベースであり、次のようなスキームを作成しました。

messages | dialogs | texts

固有のダイアログのコレクションは、保存されたメッセージです。

dialog_id | owner_user_id | viewer_user_id | last_message | some_info

そして、すべてが明らかです:

  1. dNodeを使用してページを開くとhttp://site.com/mail/、PHP は node.jsuser_id側でを渡します。
  2. node.js が取得user_idされると、彼は「ダイアログ」のコレクションを使用してすべての「ダイアログ」を引き出し、メイン ページを描画します。
  3. ユーザーがジョンなどのユーザーとの対話を開くと、ページが開き、彼らの通信が表示されますhttp://site.com/mail/{John user_id}
  4. socket.io はリアルタイムの会話です。

それでおしまい。私の経験が何かの役に立てば幸いです:)

幸運を!

于 2013-07-27T09:24:17.353 に答える