「インスタントメッセージング技術の分析と実践的な」研究ノートは2--ユーザーはピア・メッセージングアーキテクチャをチャットすることができます

メッセージ蓄積サーバのほとんどは、視聴履歴情報を容易にするためまたはオフラインのメッセージを一時的に記憶するため。
メッセージ記憶装置、及び未読メッセージ・メッセージング・チャネル:ユーザサポートピアチャット・メッセージング・アーキテクチャは、3つの部分を含みます。

メッセージストレージ

メッセージ履歴の送信者と受信者は、一方の当事者のメッセージを削除するには、メッセージを送った後、あること、互いに独立であると仮定すると、他のはまだこのメッセージを取得することができ、二つのテーブルを使用するには、メッセージが保存されている必要があります:メッセージ内容テーブルを(図USER_MESSAGEテーブル)とメッセージインデックステーブル(図中user_message_historyテーブル)。前者は主にメッセージを介してユーザID、IDおよび旧会合の送信側と受信側の記録、チャット履歴として理解することができ、メッセージID、メッセージの内容、メッセージタイプ、メッセージの作成時間など、記憶されています。
一般的なIMシステムは、両側がすぐに必要とインタラクティブなチャットを見つけることができるように、連絡先リストは、最近の2つのショーのためにチャットメッセージ、メッセージのインデックスを持つテーブルを運ぶでしょう、連絡先(図中user_message_contacterテーブル)の最新のリストが必要ですテーブルの差があることである:メッセージのインデックステーブルは、メッセージの履歴ログの送信者と受信者を格納し、連絡先リストは、主にユーザーの最新のすべての連絡先を照会するために使用されます。

仮定ジョー・スミスは、あなたのメッセージテーブルに(図USER_MESSAGE 1001レコードIDのテーブルとする)のデータを挿入し、次いで、インデックステーブルに2つのメッセージデータに挿入、ジョン・ドウにメッセージを送信し、ユーザIDが張であります3つの記録(図中のテーブルを想定。user_message_history IDレコードの30923)を、メッセージIDにユーザーIDがJohn Doeのレコード(レコードの図のuser_message_historyテーブルID 30922を想定)であり、1001は、二つのレコードです。
そして、それは、それぞれ最近の連絡先のジョー・スミスの最新の連絡先を更新し、ジョン・ドウ、前者はジョー・スミスとジョン・ドウは、IDのUSERIDレコードを持つ人々と対話し、そうでない場合は、挿入したユーザIDのUSERIDのための連絡先リストがあるかどうかを見つけることです新しい連絡先レコード、最新のメッセージIDが1001であり、一方、あなたはジョー・スミスとジョン・ドウの前にチャットを持っていた場合は、最新のメッセージIDを更新することができます。同じように最近の連絡先のジョン・ドウを更新。

あなたがメッセージを録音ジョー・スミスとジョン・ドウ対話を一覧表示したい場合は、次のクエリのSQLステートメントを使用することができます。

select * from user_message_history where user_id = 张三USERID or contacter_id = 张三USERID;

第二に、未読メッセージ

1がメッセージを送信し、受信者がオフラインであるかの権限を思い出させるために通知バーを制限する場合は、治療薬として未読思い出させる必要があります。未読メッセージの特定の合計数とセッションを読み取らない受信者へのメッセージを達成するために設定されています。
ジョー・スミスジョン・ドウは、メッセージを送信する場合は、IMサーバはありませんJohn Doeの総読書プラス1に、メッセージを受信し、ジョン・ドウとジョー・スミスがセッションに読んでプラス1されませんでした。
ジョン・ドウを表示した後に、このニュースは行いません。測定値は、総ジョン・ドウが1デクリメントされるようにされていない、変更、およびジョン・ドウ読みセッションの座席がデクリメントされません。
一般的に、サポートする必要のローカルストレージを選択するために、IMサーバの読み取りに格納されていない機能、反対に「マルチターミナルは、メッセージをローミングします」。

第三に、メッセージングチャンネル

  • チャネルを送信

; TCP接続が長く維持され、IMサーバは、クライアントとIMサーバー間でメッセージを送信するためのAPIを提供し
、クライアントがメッセージを送信した際に、プライベートプロトコルでメッセージをカプセル化して、IMにAPIサービス終了メッセージを呼び出します。

  • 受信チャンネル

クライアントとサービスゲートウェイサーバとの間の永続的接続をIM(TCP接続または接続された長尺用WebSocket)のメッセージを受信し、維持し、TCPを用いて同時にデータ伝送能力を受け取ることができ、IMサーバーからのメッセージが受信者にプッシュされます。受信者がオンラインで(なしネットワークまたは未開封APP)でない場合、局は受信者にプッシュされたサードパーティのオペレーティングシステムの他の補助チャネル、ベンダーチャネル各種デバイス、通知バーを介してメッセージを使用してもよいです。

おすすめ

転載: www.cnblogs.com/sunshineliulu/p/11441026.html