2017-03-08 34 views
3

私はチャンネルのリアルタイムチャットを開発したいと、これらは私のニーズは:サイト を管理するためのリアルタイムチャット

  • PHPバックエンド
  • Redisの
  • のみチャネルの興味をユーザーにメッセージを送信し、受信されると、ワンのWebSocket接続メッセージを送信するパブ/サブ
  • セッション及びデータ一次記憶します。
  • (オプション)私はこれを達成するために、2つの異なるアーキテクチャを参照してください時刻同期のような偉大なNPMパッケージを使用するようにNodeJSまたはsocket.io

:Socket.io

  • socket.io

  • crossbar.io

Crossbar.ioこれらは私の質問は以下のとおりです。

  1. は私が選ぶ、なぜべきアーキテクチャ?
  2. キーは、ユーザーIDが不正な形式である可能性があるため、クライアントから取得できません。ですから最初のアーキテクチャーでは、すべてのソケットメッセージについて、CookieからPHPSESSID値を付けて、RedisからPHPセッションを取得することにしました。ユーザーIDを取得するにはより適切な方法がありますか?
  3. 第2のアーキテクチャでユーザーIDを取得するのが別の方法で行うことができますか?

編集:

、それは非常に強力で、リアルタイムで多くの異なった言語アプリケーションを通信することができます原因私は、Crossbar.ioを選びました。例を勉強した後、私はこれを思いつきます:

  • すべてのログインユーザーがデータベースに秘密鍵を生成しました。

  • PHPクライアント(高速道路)

  • ユーザーのブラウザがクロスバーのサーバーに接続し、挑戦しているクロスバーのサーバーに接続し、カスタムWAMP-CRA認証を登録します。シークレットとauth_id(ユーザーID)はページロードでDBからロードされるので、 はチャレンジを行い、レスポンスを送信できます。

  • PHP認証者は、提供された秘密とidがauth_idに等しいユーザーをDBで検索します。存在する場合は、 セッションを正常に認証します。auth_idは実際のユーザIDであると信じられます。私が購読にAUTH_ID取得できますか

これらは、私の質問ですか?

  • また、Cookie認証が追加され、認証後にブラウザが記憶されます。しかし、のChrome DevToolsには、ローカルストレージにCookieも値もありません。キャッシュをクリアした後でも、私のブラウザはまだクロスバによって覚えています。私はそれがどのように可能なのだろうか?

  • EDIT2:

    は、たぶん私は誤解されましたが、主な問題は、適切なアーキテクチャを選択し、信頼できるユーザーIDを取得しました。私は賞金を授与した後、私はdownvotedされたので、注意はなかった。私はリアルタイムアプリについて多くを読んで、最終的にCrossbar.ioを使用することに決めました。そのため、私はそれに関連する質問を編集しました。その後、人々はアップボーニングを始め、別のアーキテクチャーを提案しましたが、私の質問には本当に答えませんでした。結局私はそれを自分自身でやり遂げ、私の答えを提示しました。

    +0

    「PHPバックエンドによるサイト管理」とはどういう意味ですか?私はあなたのチャットHTMLインターフェイスは、実際にPHPのバックエンドによって提供される必要はないと思う。次に、軽くなります。nodejsまたはRatchetPHPバックエンドを使用してチャットサーバーを提供し、HTML + js + autobahnjsフロントエンドを使用できます。 – Alcalyn

    +0

    @Alcalynチャットはサイトのほんの一部であり、PHPフレームワークのユーザー、メッセージ、その他のものを管理したい –

    +0

    可能な回答が多すぎるか、この回答が長すぎます。回答セットを絞り込むか、いくつかの段落で回答できる問題を特定するための詳細を追加してください。私は一般的な問題を解決するための開発フォーラム(おそらく[Quora](http://www.quora.com/Computer-Programming))を見つけることをお勧めします。次に、特定のコーディングの問題がある場合は、Stack Overflowに戻ってください。お手伝いします。 –

    答えて

    関連する問題